文章目录
-
-
- [一、为什么选择 Selenium](#一、为什么选择 Selenium)
- [二、Selenium 底层原理](#二、Selenium 底层原理)
- [三、搭建 web 自动化测试环境](#三、搭建 web 自动化测试环境)
- 四、测试框架
- 五、浏览器启动、关闭与控制
-
- [1、 浏览器启动](#1、 浏览器启动)
- [2、 浏览器关闭](#2、 浏览器关闭)
- [3、 浏览器控制](#3、 浏览器控制)
- 六、元素定位与控制
- [七、 POM 封装](#七、 POM 封装)
-
- [1、什么是 POM?](#1、什么是 POM?)
- [2、怎么封装 POM?](#2、怎么封装 POM?)
-
一、为什么选择 Selenium
1、什么是 Selenium?
Selenium 不是一个工具,是一个工具包:
- Selenium IDE
- Selenium Grid
- Selenium WebDriver
2、为什么选择 Selenium ?
- 1.1 Selenium 提供完备工具包,用例创建、编辑、执行,开箱即用
- 1.2 Selenium 支持多种编程语言
- 1.3 Selenium 支持多种浏览器进行测试
如果仅仅测试 Chrome 下的 web 页面,建议用:playwright;
如果不只是测试 Chrome 下的 web 页面,建议用:Selenium
二、Selenium 底层原理
编程语言通过调用 selenium,selenium 通过 webdriver 接口(基于 HTTP 协议)调用浏览器驱动,浏览器驱动(是各浏览器开发的)去驱动浏览器。
比如:Python->selenium->HTTP->chromedriver->chrome
三、搭建 web 自动化测试环境
可参考 Selenium-WEB自动化测试环境配置文档
1、安装 Python
2、安装浏览器-比如 Chrome
3、安装浏览器驱动,注意和浏览器版本保持一致。
4、安装 selenium,在 pycharm 的终端下执行:
pip install selenium
5、测试脚本:
from time import sleep
from selenium import webdriver
Ch_driver = webdriver.Chrome()
Ch_driver.get("https://www.baidu.com")
sleep(3)
Ch_driver.quit()
或
from webdriver_helper import get_webdriver
driver = get_webdriver() # 启动浏览器
driver.get("https://www.baidu.com") # 控制浏览器
sleep(3)
driver.quit()
四、测试框架
五、浏览器启动、关闭与控制
1、 浏览器启动
安装 webdriver-helper :pip install webdriver-helper==1.*
-
带浏览器类型启动浏览器:
from webdriver_helper import get_webdriver
driver = get_webdriver('edge') # 启动浏览器,不需要再单独安装浏览器驱动 -
带浏览器参数启动浏览器
options = webdriver.EdgeOptions()
options.add_argument('--headless') #无头模式
options.add_argument('--start-maximized') # 最大化模式
options.add_argument('--proxy-server=https://127.0.0.1:8866://') #使用代理
driver = get_webdriver(options=options) # 带浏览器参数启动浏览器
2、 浏览器关闭
- python 执行完毕会自动关闭
- 退出浏览器
driver.quit()
- 关闭当前窗口
driver.close()
3、 浏览器控制
代码是 driver.xxxxxx
driver.maximize_window() #最大化窗口
driver.set_window_size(390, 844) #设置窗口大小
driver.back() #回到空白页面
driver.forward() #前进到上一次访问的页面
driver.refresh() #刷新:地址不变,输入框的内容全部丢失
六、元素定位与控制
代码是 driver.find_element().xxxxxx
先定位元素,再控制元素
1、 元素定位
八大定位策略:
分为三类:
-
1-属性
-
-
2-文本
-
3-表达式:
- xpath 和 css selector 最常用,两个核心
- xpath :xml 的查询语言,网页是 HTML 是 XML 的子类
定位策略被 find_element 使用:
- find_element:返回一个元素
- find_elements:返回多个元素,放在一个列表
2、三大等待
等待 是为了解决页面尚未就绪 ,导致的自动化操作失败
拓展知识-页面的状态:
- a、加载 HTML
- b、渲染 DOM
- c、元素出现在画面中
- d、元素可以接受交互
三种等待:
-
a、强制等待:知道等待时长的时候使用
from time import sleep
sleep(1) -
b、隐式等待:不知道等待时长的时候使用
driver.implicitly_wait(5)
-
c、显式等待:复杂的等待就绪条件下使用
def wait_el_can_click(driver):
# 元素可以被定位
element = driver.find_element(By.XPATH, '//*[@class="bg s_btn"]')
# 元素可以点击
return element.is_enabled()
#等待
wait = WebDriverWait(driver, 10)
wait.until(wait_el_can_click)
3、元素控制
举例:
-
点击:click 右键点击
-
输入内容:send_keys
driver.find_element(By.XPATH,'//*[@id="kw"]').send_keys("python")
4、信息获取
print("浏览器名称",driver.name)
print("网站标题",driver.title)
print("网站地址",driver.current_url)
print("网站源码",driver.page_source)
5、高级控制技巧
- 窗口切换
- 读写 cookies
- 执行 JavaScript
七、 POM 封装
1、什么是 POM?

2、怎么封装 POM?
创建一个对象,就会执行它的 init 方法
执行步骤:
- 1、执行 Main
pytest.main()
- 2、执行前置:
driver = login_baidu()
- 3、执行用例:
test_login
- 4、执行 LoginPage 页的方法
- 5、执行后置:print("关闭浏览器")
未完待续。。。。。。