【web自动化】Selenium快速入门
selenium 是一个开源的Web自动化工具,一般用于测试、爬虫、刷票等场景
三个组件:
- Selenium IDE:浏览器插件,生成测试脚本(脚本录制),4年前停止更新
- Selenium WebDriver:让代码控制浏览器模拟用户操作,自动化测试必备组件
- Selenium Grid:分布式拓展,让自动化脚本在多个机器上运行
特点:
1.行业标准:WebDriver成为W3C标准
2.兼容性强:
1.支持多语言
2.支持多浏览器
3.支持多环境
3,生态比较成熟
1,书籍、视频
2,Appium(App自动化测试)
3.pytest
2.Selenium环境搭建
假设有python环境
pip3 install selenium
from selenium import webdriver
driver = webdriber.Chrome() # webdriver
driver.get("url") # 控制
driver.quit() # 关闭
结果:
- 没有报错
- 报错:
- 找不到浏览器
- 找不到浏览器驱动
3.Selenium 应用示例
能够做什么:
- 点击
- 滚动
- 左右切换
- 大小缩放(兼容性问题)
4.两个对象:
浏览器交互 元素交互
对象:面向对象
Selenium最开始使用Java开发,几乎所有的用法都是面向对象
- WebDriber:浏览器
- 页面跳转
- 大小调整
- 截图
- 滚动窗口
- 切换窗口
- 获取网页标题、
- WebElement:元素的操作
from selenium import webdriver
# 语法:实例化
driver = webdriver.Chrome() # 启动
# 语法:调用实例化方法
driver.get("url") # 控制
# 语法: 访问实例化属性
print(driver.tittle)
driver.quit() # 关闭
5.八钟定位:

class By:
ID
NAME
CLASS_NAME
TAG_NAME
LINK_TEXT
PARTIAL_LINK_TEXT
XPATH
CSS_SELECTOR
1.针对链接:
- LINK_TEXT
- PARTIAL_LINK_TEXT
2.针对元素属性
- ID
- NAME
- CLASS_NAME
- TAG_NAME
3.万能方法
- XPATH
- CSS_SELECTOR
同一个元素,可以使用不同的方式进行定位
6.三大等待

经典场景:等元素加载完成
- 强制等待:time.slepp()
- 隐式等待:
driver.implicitly_wait()#启动时设置 - 显示等待:
WebDriverWait(driver,timeout:20)
定位策略 值
7.和pytest 集成
pytest --driver chrome --html report.html
pip3 install pytest-selenium
结果 日志 截图
8.测试框架封装
- POM页面对象模型
- KDT关键字驱动测试
POM=PageObjectMODEL
- 使用类,代表页面
- 使用类中的属性,代表页面的元素
- 使用类中的方法,代表页面的操作
抽象父类 BasePage
class BasePage
def test_login(selenium)
page = LoginPage(selenium) #实例化PO