一、安装与配置
web自动化测试工具集,包括IDE、Grid、RC(selenium 1.0)、WebDriver(selenium 2.0)等。
官方文档:
https://selenium-python.readthedocs.io/index.html
https://seleniumhq.github.io/selenium/docs/api/py/api.html
安装步骤(Wins环境下):
1、安装selenium
pip install selenium
2、安装webdriver
各大浏览器webdriver下载地址(本文用的Chrome):
浏览器 | webdriver下载地址 | 驱动 |
---|---|---|
Chrome | https://sites.google.com/a/chromium.org/chromedriver/downloads 或者http://chromedriver.storage.googleapis.com/index.html | ChromeDriver |
Edge | https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ | edgeDriver |
Firefox | https://github.com/mozilla/geckodriver/releases | geckoDriver |
Safari | https://webkit.org/blog/6900/webdriver-support-in-safari-10/ | safariDriver |
IE | http://selenium-release.storage.googleapis.com/index.html | ieDriver |
注:浏览器会不断的更新,那么与其匹配的驱动软件也会同样的更新。
所以webdriver需要和对应的浏览器版本以及selenium版本对应
3、webdriver安装路径
复制webdriver到Python安装目录下,我是之前下载的Anaconda,且Anaconda路径也加入到环境变量了,所以复制到Anaconda目录下,
所以直接放在Anaconda目录下
二、使用入门
1、定位
Selenium提供了8种定位方式
方式 | 代码 | 含义 |
---|---|---|
id | find_element_by_id | 通过元素id定位 |
name | find_element_by_name | 通过元素name定位 |
class name | find_element_by_class_name | 通过classname进行定位 |
tag name | find_element_by_tag_name | 通过标签定位 |
link text | find_element_by_link_text | 通过完整超链接定位 |
partial link text | find_element_by_partial_link_text | 通过部分链接定位 |
xpath | find_element_by_xpath | 通过xpath(路径)表达式定位 |
css selector | find_element_by_css_selector | 通过css选择器进行定位 |
2、打开登录网页
#1.实例化出一个浏览器
browser = webdriver.Chrome()
#2.通过浏览器向服务器发送URL请求
browser.get("https://github.com/login")
#3.登录
time.sleep(3) #延迟3s
browser.find_element_by_id("login_field").send_keys("用户名") #输入用户名
browser.find_element_by_id("password").send_keys("密码") #输入密码
time.sleep(3)
browser.find_element_by_name("commit").click()#点击登录
查看网页id、name等,鼠标放在登录框右击鼠标,点击检查
3、网页其他操作
3.1、控制浏览器操作的一些方法
方法 | 说明 |
---|---|
set_window_size() | 设置浏览器的大小 |
back() | 控制浏览器后退 |
forward() | 控制浏览器前进 |
refresh() | 刷新当前页面 |
clear() | 清除文本 |
send_keys (value) | 模拟按键输入 |
click() | 单击元素 |
submit() | 用于提交表单 |
get_attribute(name) | 获取元素属性值 |
is_displayed() | 设置该元素是否用户可见 |
size | 返回元素的尺寸 |
text | 获取元素的文本 |
3.2、鼠标事件
在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。
方法 | 说明 |
---|---|
ActionChains(driver) | 构造ActionChains对象 |
context_click() | 执行鼠标悬停操作 |
move_to_element(above) | 右击 |
double_click() | 双击 |
drag_and_drop() | 拖动 |
move_to_element(above) | 执行鼠标悬停操作 |
context_click() | 用于模拟鼠标右键操作, 在调用时需要指定元素定位 |
perform() | 执行所有 ActionChains 中存储的行为,可以理解成是对整个操作的提交动作 |
3.3、键盘事件
Selenium中的Key模块为我们提供了模拟键盘按键的方法,那就是send_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…Fn) | 键盘 F1…Fn |
3.4、获取断言信息
不管是在做功能测试还是自动化测试,最后一步需要拿实际结果与预期进行比较。这个比较的称之为断言。通过我们获取title 、URL和text等信息进行断言。
属性 | 说明 |
---|---|
title | 用于获得当前页面的标题 |
current_url | 用户获得当前页面的URL |
text | 获取搜索条目的文本信息 |