一、selenium概述
Selenium 是一套用于Web应用程序自动化测试的工具,它直接运行在浏览器中,就像真正的用户在操作一样。Selenium支持多种浏览器(如Chrome、Firefox、Edge等)和多种编程语言(如Java、Python、C#等)
二、selenium的优势
- 开源免费:不涉及许可费用,降低了测试成本。
- 跨平台与跨浏览器:支持多种操作系统和浏览器,提高了测试的灵活性。
- 编程语言支持:支持多种编程语言,便于不同技术栈的开发者使用。
- 集成能力强:可以与TestNG、JUnit、Maven、Jenkins等工具集成,实现持续测试。
三、 Selenium WebDriver
- 原理:WebDriver 驱动浏览器,发送请求给浏览器驱动,浏览器驱动解析请求并发送给浏览器执行。
- 环境搭建:需要下载对应浏览器的驱动(如chromedriver),并将其路径添加到系统的环境变量中。
四、 Selenium API
- WebDriver 常用 API :如
driver.get(url)
用于打开网页,driver.find_element_by_*()
用于定位元素,driver.quit()
用于退出浏览器等。 - WebElement 常用 API :如
element.click()
用于点击元素,element.send_keys()
用于向输入框发送文本等。
五、元素定位
Selenium 支持多种元素定位方式,包括:
- id:通过元素的id属性定位。
- name:通过元素的name属性定位。
- class name:通过元素的class属性定位。
- tag name:通过元素的标签名定位。
- link text:通过链接文本定位超链接。
- partial link text:通过链接文本的一部分定位超链接。
- xpath:通过XML路径语言定位元素。
- css selector:通过CSS选择器定位元素。
六、元素等待机制
- 硬性等待 :使用
time.sleep()
强制等待一定时间,不推荐使用。 - 隐式等待 :通过
driver.implicitly_wait(time)
设置全局等待时间,当查找元素时,如果元素不在DOM中,则等待直到超时时间。 - 显式等待 :使用
WebDriverWait
结合expected_conditions
设置等待条件,只针对某个元素等待直到满足条件。
七、 其他高级功能
- 操作JavaScript :通过
driver.execute_script()
执行JavaScript代码。 - 处理弹出框 :如
alert
、confirm
等。 - 控制浏览器操作:如窗口大小、浏览器前进后退等。
- 模拟鼠标键盘操作:如鼠标移动、点击、键盘输入等。
八、selenium元素定位技巧
1、id find_element_by_id()
2、name find_element_by_name()
3、class name find_element_by_class name()
4、tag name find_element_by_tag name()
5、link text find_element_by_link text()
6、partial link text find_element_by_partial link_text()
7、xpath find_element_by_xpath()
8、css selector find_element_by_css selector()