发布时间:2023-04-23 10:30
1、selenium WebDeiver 是selenium2.0版本以后提供的一套用于实现功能自动化测试的框架
2、seleium Webdriver没有图形化界面,无法录制生成代码,但是功能很强大,借助于浏览器厂商预留的API来操作浏览器,还可以使用python或java等高级语言的语言来实现复杂逻辑的测试用例代码,使用单元测试框架来管理和批量运行,所有selenium Webdriver比selenium IDE更常用
3、seleium webdiver原理:浏览器厂商预留的API被各个浏览器的驱动程序调用,来实现浏览器里的操作,因为各个浏览器厂商预留的API不同,所以对应有各自的驱动程序,随着浏览器版本的升级,API可能会变化,所以启动程序文件可能也需要升级
1、基本操作:针对文本框、按钮、超级链接、图片、单选按钮、复选框等类型的元素使用的操作函数
(1)send_keys函数:参数就是要输入的那些字符,说明:是追加式输入,不是替换式输入
示例:输入账号密码(这里使用ECshop演示)
第二种写法需要导入By类
from selenium.webdriver.common.by import By
(2)clear函数:清空数据,无参
示例:清除用户里面的数据
(3)click函数:点击元素,无参
示例:点击登录操作
2、下拉列表的操作:针对HTML网页里的select标记的元素,Selenium webdriver专门设计了一个Select类来管理其中的操作和数据属性
示例:定位所有分类下拉列表里面的耳机
(1)导入Select类:
from selenium.webdriver.support.select import Select
(2)定位所有分类的下拉列表,封装Select对象(实例化Select类的实例对象,调用该类的构造函数,该构造函数有一个参数,是前面所定位的页面元素WebElement类型的对象)
3、模拟键盘操作:
(1)先导入keys类:
from selenium.webdriver.common.keys import Keys
(2)在send_keys参数里使用keys类里的常量来表示键盘上的修饰符(特殊按键)
示例:把用户名账号复制粘贴放在搜索框里面
4、弹出框的操作:切换到弹出框,就可以获得一个弹出框类型(Alert类型)的对象实例。
注意:此语法中alert前不是下划线,是点。
示例:点击登录切换到文本框在关闭文本框
5、等待操作:两种等待方式
(1)强制等待:等待固定时间,使用time模块里的sleep函数就能实现,参数是以秒为单位的时间的整数。
示例:导入
from time import sleep
sleep(2) #强制等待2秒
(2)隐式等待:做全局设置,配置一下所有find_element开头的函数找不到元素时默认最长等待的超时时间,调用driver对象的implicitly_wait函数,参数是以秒为单位的最长等待时间,如果到达此时间,还找不到元素,就会抛出NoSuchElementException(此异常代表找不到元素)。
示例:设置隐式等待的超时时间为10秒
driver.implicitly_wait(10) #隐式等待
6、切换Frame:
(1)应用场景:如果定位元素失败(抛出NoSuchElementException),调查网页源代码,发现这个元素位于一个frame或iframe标记的元素下的子网页(html标记)里,那么此时需要切换Frame。
(2)Frame:叫做HTML语法里的框架,使用frame或iframe标记来实现,在其中可以嵌套显示网页。
(3)切换方法一:使用frame或iframe标记的元素的id或name属性值来作为切换条件。---最常用!
语法:driver.switch_to.frame("frame或iframe标记的元素的id或name属性值")
示例:登录ecshop后台在点击退出操作