自动化
自动化:将人工测试转换成自动化脚本/工具去运行
优势:节省时间(20% - 30%),提高工作效率
自动化框架
- UI自动化
Python + selenium + unittest + Jenkins
- 接口自动化:
- 使用Python写代码进行的
Python + requests+ unittest + Jenkins
- 使用接口工具进行的
jmeter + Jenkins
- 使用Python写代码进行的
- APP自动化
Python + appium + unittest + Jenkins
初始化
将谷歌驱动、火狐驱动等放到谷歌或火狐的路径下
元素定位
-
在Python 语言中对应的定位方法如下:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
ind_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
-
通过标签tag定位
- 由于input输入框的标签在页面显示很多个,就不能使用find_element…进行定位:要用find_elements…
ssk_t = dr.find_elements_by_tag_name("input") print(len(ssk_t))
- 显示有多个标签,通过for循环逐个遍历取出每个input标签
for h in ssk_t: # 判断每个input标签的属性值,是否等于输入框特有属性值 if h.get_attribute("name") == "q": h.send_keys("通过tag找到")
- 由于input输入框的标签在页面显示很多个,就不能使用find_element…进行定位:要用find_elements…
-
通过xpath相对路径定位
由于定位的标签所有属性都存在不唯一的情况下,可通过层级(上级或更上级)xpath相对定位,
ssk_id = dr.find_element_by_xpath('//*[@id="input"]')
- 层级之间用
/
隔开 *
表示所有标签的统称//
表相对路径的开头[@属性=值]
—单一属性,值[@属性=值and@属性=值]
—多属性值
- 层级之间用
-
通过CSS进行定位
css层级关系用 > 隔开
css同级关系用 + 隔开
dr.find_element_by_css_selector('div#suggest-align > input').send_keys("通过css层级")
元素操作
-
clear()
— 清除文本,如果是一个文件输入框 -
send_keys(value)
---- 在元素上模拟按键输入 -
click()
---- 单击元素 -
text
返回元素的文本 -
get_attribute("name")
: 获得属性值 -
is_displayed()
: 判断元素是否显示 -
submit()
: 用于提交表单
时间等待
隐性等待:等待所有事务完成–>Webdriver提供了implicitly_wait()方法来实现等待,默认的等待时间为0
显性等待:等待某一个事务
强制等待:必须要等够时间才往下执行
鼠标操作
在webdriver中,关于鼠标操作的方法,由ActionChains类提供。ActionChains类提供的常见的方法有:
move_to_element()
鼠标悬停
perform()
执行所有ActionChains中存储的行为
警告框处理
在WebDriver 中处理JavaScript 所生成的网页告警信息可以使用switch_to.alert方法具体方法如下。该方法,包含三个属性:
text
返回告警信息中的文字信息。
accept
点击确认按钮。
dismiss
点击取消按钮。
多表单切换
通过switch_to.frame()方法将当前定位的主题切换的内嵌的frame里面去
dr.switch_to.frame(“表单1”)
切换到默认表单
dr.switch_to.default_content()
窗口切换
WebDriver 提供了switch_to_window()方法可以实现在不同的窗口之间切换。
窗口切换的几个方法:
current_window_handle
:获得当前窗口句柄。
window_handles
:返回的所有窗口的句柄到当前会话。
switch_to.window()
:用于切换到相应的窗口
关闭窗口
quit()
方法
close()