对于百度搜索页面,如果我们想自动化输入 软件测试 ,怎么做呢?
这就是在网页中,操控界面元素。
web界面自动化,要操控元素,首先需要选择界面元素 ,或者说定位界面元素
就是先告诉浏览器,你要操作哪个界面元素, 让它找到你要操作的界面元素。
我们必须要让浏览器 先找到元素,然后,才能操作元素。
选择元素的方法
对应web自动化来说, 就是要告诉浏览器,你要操作的界面元素是什么。
那么,怎么告诉浏览器 呢?
方法就是:告诉浏览器,你要操作的这个 web 元素的 特征 。
就是告诉浏览器,这个元素它有什么与众不同的地方,可以让浏览器一下子找到它。
元素的特征怎么查看?
可以使用浏览器的 开发者工具栏 帮我们查看、选择 web 元素。
请大家用chrome浏览器访问百度,按Ctrl+shift+I后,点击下图箭头处的Elements标签,即可查看页面对应的HTML 元素
之后,鼠标在界面上点击哪个元素,就可以查看 该元素对应的html标签 了。
比如,前面的图的高亮处,就是谷歌搜索输入框 对应的 input元素
根据 元素的id 属性选择元素
仔细看上面的 input元素 内容,会发现它有一个属性叫id。
我们可以把 id 想象成元素的编号, 是用来在html中标记该元素的。 根据规范, 如果元素有id属性 ,这个id 必须是当前html中唯一的。
所以如果元素有id, 根据id选择元素是最简单高效的方式。
这里百度搜索框的id值为kw
下面的代码,可以自动化在浏览器中 访问百度,并且在输入框中搜索 软件测试 。
from selenium import webdriver
# 创建 WebDriver 对象,指明使用chrome浏览器驱动
wd = webdriver.Chrome()
# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get('https://www.baidu.com')
# 根据id选择元素,返回的就是该元素对应的WebElement对象
element = wd.find_element_by_id('kw')
# 通过该 WebElement对象,就可以对页面元素进行操作了
# 比如输入字符串到 这个 输入框里
element.send_keys('软件测试\n')
其中
wd = webdriver.Chrome()
driver赋值的是 WebDriver 类型的对象,我们可以通过这个对象来操控浏览器,比如 打开网址、选择界面元素等。
wd.find_element_by_id('kw')
使用了 WebDriver 对象 的方法 find_element_by_id,
这行代码运行是,就会发起一个请求通过 浏览器驱动 转发给浏览器,告诉它,需要选择一个id为 kw 的元素。
浏览器,找到id为kw的元素后,将结果通过 浏览器驱动 返回给 自动化程序, 所以 find_element_by_id 方法会 返回一个 WebElement 类型的对象。
这个WebElement 对象可以看成是对应 页面元素 的遥控器。
我们通过这个WebElement对象,就可以 操控 对应的界面元素。
比如 :
调用这个对象的 send_keys 方法就可以在对应的元素中 输入字符串,
调用这个对象的 click 方法就可以 点击 该元素。