1.Selenium快速入门
Selenium 是一个开源的Web自动化工具,一般用于测试、爬虫、刷票等场景。
三个组件:
- Selenium IDE:浏览器插件,生成测试脚本(脚本录制),4年前停止更新
- Selenium WebDriver :让代码控制浏览器模拟用户操作,自动化测试必备组件
- Selenium Grid :分布式扩展,让自动化脚本在多个机器上运行。
Selenium特点:
- 1.行业标准:WebDriver成为W3C标准
- 2.兼容性强:
- 1.支持多语言:python,java,c#,ruby
- 2.支持多浏览器:chrome,firefox,edge,safari
- 3.支持多环境:windows,macos,linux
- 3.生态比较成熟:
- 1.书籍,视频
- 2.Appium(APP自动化测试)
- 3.pytest
2.Selenium环境搭建
1、安装Python IDE集成开发工具 PyCharm
2、在PyCharm Terminal终端命令行输入:pip install selenium 安装Selenium
pip install selenium
2.1.Python+Selenium 环境验证,浏览器打开百度搜索
from selenium import webdriver
from selenium.webdriver.edge.service import Service
# 指定驱动路径
service = Service(executable_path=r'C:\Program Files\edgedriver\MicrosoftWebDriver.exe')
#添加detach选项防止浏览器闪退
options = webdriver.EdgeOptions()
options.add_experimental_option("detach", True)
# driver = webdriver.Edge(options=options)
#通过ChromeOptions添加-kiosk参数实现类似F11的全屏效果
# options.add_argument('-kiosk')
#初使化浏览器
driver = webdriver.Edge(options=options,service=service)
driver.get("https://www.baidu.com")
driver.maximize_window() #可使浏览器窗口最大化但不覆盖系统任务栏
# driver.set_window_size(300, 300) #可指定像素级尺寸
# driver.fullscreen_window() #Edge浏览器专用配置
#退出
# driver.quit()
2.2.环境验证失败的原因
- 没有安装浏览器edge,chrome,ie等
- 没有浏览器驱动msedgedriver.exe,chromedriver.exe等
- 浏览器版本与浏览器驱动版本不一致
3.Selenium应用示例
- 一般操作:访问、点击、输入
- 上下滚动
- 左右切换
- 大小缩放(兼容性问题)
4.两大对象
Selenium最开始使用Java开发。几乎所有的用法都是面向对象的风格。
浏览器(交互)、元素(交互)
- WebDriver:浏览器操作
- 页面跳转
- 大小调整
- 截图
- 滚动窗口
- 切换窗口
- 获取网页标题、内容、网址
- WebElemen:元素操作
- 输入
- 点击
- 截图
- 获取内容、大小、位置
5.八种定位
ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
- 针对链接
- LINK_TEXT
- PARTIAL_LINK_TEXT
- 针对元素属性
- ID
- NAME
- TAG_NAME
- CLASS_NAME
- 万能方法
- CSS_SELECTOR
- XPATH
同一个元素,可以使用不同的方式进行定位
6.三大等待
场景:等待元素加载完成
- 强制等待 :
time.sleep(3)
- 隐式等待:
driver = webdriver.Edge(options=options, service=service) driver.implicitly_wait(20) #隐式等待(最大等待时间20s) 放在浏览器启动之后,等待浏览器加载完成
- 显示等待:
wait=WebDriverWait(driver, 10) wait.until(lambda d: 1==1) #等待条件
7.和pytest集成
安装 pytest-selenium 插件
(.venv) PS C:\Users\batytao\PycharmProjects\PythonProject> pip install pytest-selenium
执行测试用例
(.venv) PS C:\Users\batytao\PycharmProjects\PythonProject> pytest --driver Edge -- html1 report.html
8.测试框架封装
POM 页面对象模型