在使用Selenium做自动化时,首先需要选择页面上的元素,然后才可以做点击、输入之类的操作

要告诉浏览器,要操作哪个元素

我们需要找到这个元素的特征 以百度为例

我们可以右键需要找的元素点击检查

就会弹出 开发者工具,并且自动定位到我们需要找的这个元素

另外,我们也可以在打开网页后按下F12 打开开发者工具,按下这个图标

然后鼠标在去页面上点击相应的元素,也可以自动定位

根据id属性 选择元素

根据上文中我们定位的百度搜索框的代码

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

百度搜索框的属性id是kw

所以如果我们要选择百度输入框,我们可以通过定位这个id属性kw
但是请注意:这个名字叫kw的id属性必须在这个页面是唯一的,才可以准确定位。
如果有多个属性ID名字相同的元素,它将只返回第一个匹配的元素

导入By模块

在定位之前,我们需要用到Selenium 中的 By 模块,用于定位元素时指定定位策略。

from selenium.webdriver.common.by import By

find_element()选择元素

根据id属性来选择元素我们使用find_element

element = wd.find_element(By.ID, 'kw')

send_keys()发送文本

element.send_keys() 是 Selenium 中的一个方法,用于向输入框或可编辑元素发送文本或按键事件。

上一步,我们选择了ID名为kw的元素(也就是百度搜索框),现在我们向这个输入框输入yuofyou

element.send_keys("yuofyou")

完整代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By


wd = webdriver.Chrome(service = Service('chromedriver.exe'))

wd.get('https://www.baidu.com')

element = wd.find_element(By.ID, 'kw')

element.send_keys("yuofyou")



input()

此时我们发现yuofyou 被输入上去了

我们如果需要搜索 有两种方法
一种是 回车
另外一种是 点击百度一下 这个按钮

回车的方法我们只需要在发送文本的时候加上一个换行符\n

element.send_keys("yuofyou\n")

清除输入框

如果我们想清除输入框中现在已有是字符串
使用

elemet.clear()

click按钮点击

无论是点击按钮,还是输入内容。首先第一步选择元素

通过开发者工具 可以看到百度一下的按钮id是su

使用上文提供的方法选择这个按钮

element = wd.find_element(By.ID,'su')

点击按钮

element.click()

完整代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By


wd = webdriver.Chrome(service = Service('chromedriver.exe'))

wd.get('https://www.baidu.com')

element = wd.find_element(By.ID, 'kw')

element.send_keys("yuofyou")

element = wd.find_element(By.ID,'su')
element.click()
input()

根据class属性 选择元素

在实际应用中我们发现有些元素无法通过ID去定位选择,只能通过class属性

例如我想点击这个相机图标

定位代码发现只有class属性

我们使用By模块里的CLASS_NAME进行定位 并点击

element = wd.find_element(By.CLASS_NAME,'soutu-btn')
element.click()

完整代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By


wd = webdriver.Chrome(service = Service('chromedriver.exe'))

wd.get('https://www.baidu.com')

element = wd.find_element(By.ID, 'kw')

element.send_keys("yuofyou")

element = wd.find_element(By.ID,'su')
element.click()

element = wd.find_element(By.CLASS_NAME,'soutu-btn')
element.click()

input()

但是!!!注意:在这种跳转了其他页面的情况,有一定概率你会触发一个报错

大致就是因为程序运行实在太快了,执行click以后因为网速的原因还没能跳转到第二个页面,程序就开始查找元素,就会报错找不到这个元素

这个时候我们可以在click以后添加一个延迟
导入time模块

import time

在需要延迟的地方加上一句这个

time.sleep(1)

完整代码:

import time

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By


wd = webdriver.Chrome(service = Service('chromedriver.exe'))

wd.get('https://www.baidu.com')

element = wd.find_element(By.ID, 'kw')

element.send_keys("yuofyou")

element = wd.find_element(By.ID,'su')
element.click()

time.sleep(1)

element = wd.find_element(By.CLASS_NAME,'soutu-btn')
element.click()

input()
最后修改:2023 年 07 月 03 日
如果觉得我的文章对你有用,请随意赞赏