Selenium库
用于web应用程序的测试工具
模拟手工操作浏览器,进行自动化测试
特点
- 开源免费
- 多浏览器支持 —Chrome、IE、FireFox等
- 多平台支持 — Windows、Linux都支持
- 支持分布式测试(Grid)
- 支持录制回放和脚本生成(IDE)
Selenium三剑客
- WebDriver
- IDE 支持录制回放和脚本生成
- Grid 支持分布式测试
官方文档
- https://selenium-python.readthedocs.io/index.html
- https://seleniumhq.github.io/selenium/docs/api/py/api.html
webdriver工作原理
通过浏览器的driver与浏览器进行通信.(传令兵,把我们的指令通过webdriver传递给浏览器,同时把浏览器的返回结果进行定位、操作、获取属性信息等)
配置环境
pip install selenium
下载webdriver(与浏览器的种类和版本匹配)
Chrome:http://chromedriver.storage.googleapis.com/index.html
Firefox:https://github.com/mozilla/geckodriver/releases/
下载好后解压
1.放置到python的安装目录
2.放置在项目中的专门目录
使用selenium
进入网址,进入到网站后显示5秒钟,5秒之后关闭浏览器
# 想操作浏览器导入webdriver的包就可以,不用导入selenium中所有的包
from selenium import webdriver
from time import sleep
# 初始化一个driver(要加括号)
driver = webdriver.Chrome()
# 访问乐博商城的网址
driver.get("http://shop.pro.17lebo.com")
#这时我就可以控制浏览器了,能控制浏览器就可以操纵要测试的软件了
#……
# 沉睡5秒钟
sleep(5)
# 退出当前标签页
# driver.close()
# 退出整个浏览器 不关闭浏览器,浏览器会越来越多
driver.quit()
webdriver的功能
- 能访问浏览器
- 能设置浏览器的窗口大小 无界面时也有效
# 最大化
driver.maximize_window()
# 最小化
driver.minimize_window()
# 设置窗口大小
driver.set_window_size(800, 600)
- 控制前进、后退
from selenium import webdriver
from time import sleep
# 初始化一个driver(要加括号)
driver = webdriver.Chrome()
# 访问乐博商城的网址
driver.get("http://shop.pro.17lebo.com")
# 设置浏览器的大小
# 最大化
driver.maximize_window()
# 控制前进。后退
# 打开乐博官网
driver.get("http://www.17lebo.com")
sleep(3)
# 后退 去上一个页面
driver.back()
sleep(3)
# 前进 去下一个页面
driver.forward()
sleep(3)
- 截图
# 浏览器截图
driver.get_screenshot_as_file("浏览器截图3.png")
- 刷新页面
# 刷新页面
driver.refresh()
- 关闭浏览器
driver.quit()
- 关闭当前页面
driver,close()
- 获取页面属性
浏览器的无界面操作
每次运行的时候都会出现浏览器,有的时候不想让浏览器出现,就用到无界面操作
无界面模式下默认不是全屏,默认大小是800*600
# 浏览器的无界面操作
# 用来保存各种webdriver的配置项
opt = webdriver.ChromeOptions()
opt.headless = True
# 初始化一个driver(要加括号)
driver = webdriver.Chrome(options=opt)
Selenium定位页面元素
UI自动化测试,从定位页面元素开始
8大定位方法
- id
- name
- class name:class的名
- tag name:标签名
- link text:链接的文字内容
- partial link text:这个link text包含的一部分内容
- xpath
- css selector
find_element()和find_elements()
name定位