Selenium 作为一款 Web 自动化测试框架,提供了诸多操作浏览器的方法,本节对其中的常用方法做详细介绍。
定位节点
Selenium 提供了 8 种定位单个节点的方法,如下所示:
假设下面代码某个页面的代码片段,如下所示:
下面使用表格中提供的方法定位 input 输出框。如下所示:
通过 a 标签内的文本内容定位节点,如下所示:
示例如下:
如果您想定位一组元素,方法如下所示:
定位一组元素的方法与定位单个元素类似,唯一的区别就是 element 后面多了一个 s(表示复数),因此上述方法的返回值是一个列表,您可以使用 for 循环拿到所有的元素节点。
控制浏览器
Selenium 可以操控浏览器的窗口大小、刷新页面,以及控制浏览器的前进、后退等
1) 设置浏览器窗口大小、位置
2) 控制网页前进、后退、刷新页面
WebDriver常用方法
上文中介绍了如何定位元素,以及如何设置浏览的大小、位置。 定位元素节点只是第一步, 定位之后还需要对这个元素进行操作, 比如单击按钮,或者在输入框输入文本 , 下面介绍 WebDriver 中的最常用方法:
示例如下:
除了上述方法外, WebDriver 还有一些常用属性,如下所示:
from selenium import webdriver driver = webdriver.Chrome()
获取HTML结构源码
driver.page_source #在源码中查找指定的字符串 driver.page_source.find(‘字符串’)
返回百度页面底部备案信息
text = driver.find_element_by_id(“cp”).text print(text)
获取输入框的尺寸
size = driver.find_element_by_id(‘kw’).size print(size)
{‘width’: 500, ‘height’: 22}
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver #导入 ActionChains 类 from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome() driver.get(“c.cainiao.net”)
通过xpath表达式定位到要悬停的元素
above = driver.find_element_by_xpath(‘//ul[@id=“ad-link-top”]/li[1]’)
对定位到的元素执行鼠标悬停操作
ActionChains(driver).move_to_element(above).perform()
from selenium.webdriver.common.keys import Keys
输入框输入内容
driver.find_element_by_id(“kw”).send_keys(“百度中文网H”)
删除多输入的一个H
driver.find_element_by_id(“kw”).send_keys(Keys.BACK_SPACE) #单击“百度”一下查找 driver.find_element_by_id(“su”).click() time.sleep(3) driver.quit()
输入空格键 + “Python教程”
driver.find_element_by_id(“kw”).send_keys(Keys.SPACE) driver.find_element_by_id(“kw”).send_keys(“Python教程”)
ctrl+a 全选输入框内容
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL, ‘a’)
ctrl+x 剪切输入框内容
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL, ‘x’)
ctrl+v 粘贴内容到输入框
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL, ‘v’)
使用回车键来代替单击操作click
driver.find_element_by_id(“su”).send_keys(Keys.ENTER)
执行JS脚本
WebDriver 提供了 execute_script() 方法来执行 JavaScript 代码,比如控制浏览器的滚动条。示例如下: