2018-10-17 webdriver API
(1)浏览器操作:
最大化
设置宽、高
前进、后退
from selenium import webdriver
import time #调用python中time模块
aa = webdriver.Firefox() #将模块赋值给实例
aa.get('http://www.sohu.com') #打开此网站
print('浏览器最大化')
time.sleep(3) #3秒后cpu继续响应,进行下一步
aa.maximize_window() #最大化窗口代码
time.sleep(3)
aa.set_window_size(700,200) #窗口大小
time.sleep(3)
first_url= 'http://www.baidu.com' #赋值给参数
second_url='http://nwes.baidu.com'
aa.maximize_window()
aa.get(first_url) #引用参数
aa.get(second_url)
print('后退')
aa.back() #当前网页后退代码
time.sleep(3)
print('前进') #当前网页前进代码
aa.forward()
time.sleep(3)
aa.quit() #退出程序
(2)元素定位:
id find_element_by_id()
name find_element_by_name()
tagname find_element_by_tag_name() 相同表单有多个值时:fing_elements_by_tag_name() 赋值给变量成为列表,再去遍历或键值定位元素
classname find_element_by_class_name()
linktext find_element_by_link_text() 超链接元素
partialinktext find_element_by_partial_link_text()
CSS find_element_by_css_selector()
Xpath find_element_by_xpath()
1、id定位
2、name定位
3、classname定位
4、tag name定位 标题名称定位
5、link test定位 超链接
6、partial link text定位 从超链接中一部分字段定位
7、 xpath定位
8、css定位 其他元素都没有时,可用这css用唯一属性搜索
(3)元素操作
WebElement 接口常用方法
clear() 清除元素的内容
send_keys() 在元素上模拟按键输入
click() 单击元素
submit() 提交表单(对文字链接不适用)
size 返回元素的尺寸
text 获取元素的文本
get_attribute(name) 获得属性值
(4)鼠标事件
ActionChains 类鼠标操作的常用方法:
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停在一个元素上
click_and_hold() 按下鼠标左键在一个元素上
drag_and_drop()拖动
#定位元素的原位置
element = driver.find_element_by_name(“source”)源元素
#定位元素要移动到的目标位置
target = driver.find_element_by_name(“target”)目标元素
#执行元素的移动操作
ActionChains(driver).drag_and_drop(element, target).perform()
(5)键盘事件
Keys类键盘操作的常用方法:
send_keys(Keys.BACK_SPACE) 删除键
send_keys(Keys.SPACE) 空格键
send_keys(Keys.TAB) 制表键
send_keys(Keys.ESCAPE) 回退键
send_keys(Keys.ENTER) 回车键
send_keys(Keys.CONTROL,'a') 全选
send_keys(Keys.CONTROL,'c') 复制
send_keys(Keys.CONTROL,'x') 剪切
send_keys(Keys.CONTROL,'v') 粘贴
send_keys(Keys.PAGE_DOWN) 向下滚动
send_keys(Keys.PAGE_UP) 向上滚动
send_keys(Keys.HOME) 到顶部
send_keys(Keys.END) 到底部
(6)打印信息
title 返回当前页面标题
current_url 获取当前页面url
(7)定位一组对象:
webdriver 可以很方便的使用 find_element 方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,WebElement 接口同样提供了定位一组元素的方法 find_elements定位一组对象一般用于以下场景:
批量操作对象,比如将页面上所有的 checkbox 都勾上
先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象
(8)对话框处理:使用二级定位的方式处理常见的弹出对话框
(9)浏览器多窗口处理:
有时候我们在测试一个 web 应用时会出现多个浏览器窗口的情况,webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的元素。
current_window_handle 获取当前窗口句柄
window_handles 获取所有窗口句柄
switch_to_window() 多窗口间切换
close() 关闭当前窗口
(10) alert/confirm/prompt 处理:
使用switch_to_alert()方法定位alert/confirm/prompt
text 返回alert/confirm/prompt 中的文字信息
accept() 接受现有警告框
dismiss() 解散现有警告框
send_keys() 发送内容到警告框
(11)上传文件:
webdriver未提供专门用于上传文件的方法,通用的做法是使用AutoIt上传文件
使用AutoIt上传文件
ControlFocus() 识别Windows窗口
WinWait() 设置等待时间
ControlSetText() 设置上传文件路径
ControlClick() 点击按钮
sleep() 设置休眠时间
(12) 操作浏览器滚动条:
WebDriver未提供操作浏览器滚动条的方法,可以借助JavaScript代
码和物理按键来控制滚动条。
WebDriver提供了execute_script()方法来执行JavaScript代码
(13)截图:
自动化测试用例是由程序去执行的,因此有时候打印的错误信息不是十分准确。如果在脚本执行出错的时候能对当前窗口截图保存,那么通过图片可以很直观的看出出错的原因
WebDriver提供了get_sreenshot_as_file( )函数来对当前窗口截图
(14)验证码:
对于测试来说,不管是性能测试还是自动化测试,验证码都是一个比较棘手的问题。在WebDriver中没有提供相应的方法来处理验证码。再此提供处理验证码的几种常见方法
1、关闭验证码(最简单)
2、设置万能码
3、Python-tesserct识别图片验证码(准确率不能达到100%)
4、编辑cookie信息绕过验证码