1、在 Python 语言中对应的定位方法如下:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
2、控制浏览器
# 方法来设置浏览器的大小
set_window_size()
# 控制浏览器后退、前进
back()和 forward()方法来模拟后退和前进按钮
3、简单元素操作
clear() # 清除文本,如果是一个文件输入框
send_keys(*value) # 在元素上模拟按键输入
click() # 单击元素
submit() # 方法用于提交表单
4、鼠标事件
ActionChains 类提供的鼠标操作的常用方法:
perform() 执行所有 ActionChains 中存储的行为
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停
5、键盘事件
from selenium.webdriver.common.keys import Keys
send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) 制表键(Tab)
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(Enter)
send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
send_keys(Keys.F1) 键盘 F1
……
send_keys(Keys.F12) 键盘 F12
6、获取验证消息
常用的验证方式:
title 、URL 和 tex
7、设置元素等待
Selenium显示等待和隐式等待的区别
1、selenium的显示等待
原理:显示等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么久跳出Exception
(简而言之,就是直到元素出现才去操作,如果超时则报异常)
2、selenium的隐式等待
原理:隐式等待,就是在创建driver时,为浏览器对象创建一个等待时间,这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。
注意:在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内部断的刷新页面去寻找我们需要的元素
3、笨方法等待
使当前线程进入等待,Thread.sleep();这种等待属于死等,很容易让线程挂掉,使程序抛异常,所以要慎用此方法
8、定位一组元素
定位一组对象的方法与定位单个对象的方法类似,唯一的区别是在单词 element 后面多了一个 s 表示
复数。
find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()
pop().lick() 其实是对后一个元素取消勾选。
如果只想勾选一组元素中的某一个
pop()或 pop(-1) 默认获取一组元素中的最后一个。
pop(0) 默认获取一组元素中的第一个。
pop(1) 默认获取一组元素中的第二个
9、多表单切换
switch_to_frame()方法将当前定位的主体,默认可以直接取表单的 id 或 name 属性进行切换
10、多窗口的切换
WebDriver 提供了 switch_to_window() 方法可以切换到任意的窗口
current_window_handle 获得当前窗口句柄
window_handles 返回的所有窗口的句柄到当前会话
11、警告框处理
# 接收弹窗
driver.switch_to_alert().accept()
# 通过 switch_to_alert()方法获取当前页上的警告框,accept()接受警告框。
12、上传文件
对于 web 页面的上传功能一般会有以下几种方式。
一、普通上传:普通的附件上传都是将本地文件的路径作为一个值放 input 标签中,通过 form 表单提交的
时候将这个值提交给服务器。
二、插件上传:一般是指基于 Flash 与 JavaScript 或 Ajax 等技术所实现的上传功能或插件。
1、send_keys实现上传:
#定位上传按钮,添加本地文件
driver.find_element_by_name("file").send_keys('D:\\upload_file.txt')
2、AutoIt 实现上传
它设计用于 WindowsGUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。
13、下载文件
为了让 FireFox 让浏览器能实现文件的载,我们需要通过 FirefoxProfile() 对其参数做一个设置。
browser.download.folderList
设置成 0 代表下载到浏览器默认下载路径;设置成 2 则可以保存到指定目录。
browser.download.manager.showWhenStarting
是否显示开始,Ture 为显示,Flase 为不显示。
browser.download.dir
用于指定你所下载文件的目录。os.getcwd() 该函数不需要传递参数,用于返回当前的目录。
browser.helperApps.neverAsk.saveToDisk
14、操作Cookie
因为基于真实的 cookie 的测试是无法通过白盒和
集成测试完成的。WebDriver 提供了操作 Cookie 的相关方法可以读取、添加和删除 cookie 信息。
webdriver 操作 cookie 的方法有:
get_cookies() 获得所有 cookie 信息
get_cookie(name) 返回有特定 name 值有 cookie 信息
add_cookie(cookie_dict) 添加 cookie,必须有 name 和 value 值
delete_cookie(name) 删除特定(部分)的 cookie 信息
delete_all_cookies() 删除所有 cookie 信息
15、调用JavaScript
WebDriver 提供了 execute_script()方法来执行 JavaScript 代码。
一般用到操作滚动条的会两个场景:
1、注册时的法律条文的阅读,判断用户是否阅读完成的标准是:滚动条是否拉到最下方。
2、要操作的页面元素不在视觉范围,无法进行操作,需要拖动滚动条。
16、窗口截图
Webdriver 提供了截图函数 get_screenshot_as_file()来截取当前窗口。
指定图片的保存路径及文件名,并且关闭驱动
17、关闭窗口
quit()方法 其含义为退出相关的驱动程序和关闭所有窗口
close()方法 用于关闭当前窗口。
18、验证码方案
1、去掉验证码
2、设置万能码
3、验证码识别技术(Python-tesseract 来识别图片验证码,Python-tesseract 是光学字符识别 Tesseract OCR 引擎的 Python 封装类。能够读取任何常规的图片文件(JPG, GIF ,PNG , TIFF 等))
4、记录cookie
19、WebDriver原理
webdriver 的工作流程:
1. WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做为 WebDriver 的 remote
server。
2. Client 端通过 CommandExcuter 发送 HTTPRequest 给 remote server 的侦听端口(通信协议: the
webriver wire protocol)
3. Remote server 需要依赖原生的浏览器组件(如:IEDriverServer.exe、chromedriver.exe),来转化转
化浏览器的 native 调用。