Web自动化测试[playwright结合pytest使用]
安装配置环境
PS D:\Programs\Python\com.davieyang.demo> pip install pytest-playwright
Collecting pytest-playwrightDownloading pytest_playwright-0.3.0-py3-none-any.whl (10 kB)
Requirement already satisfied: pytest in c:\program files\python37\lib\site-packages (from pytest-playwright) (7.1.2)
Collecting pytest-base-urlDownloading pytest_base_url-2.0.0-py3-none-any.whl (4.6 kB)
Requirement already satisfied: playwright>=1.18 in c:\program files\python37\lib\site-packages (from pytest-playwright) (1.22.0)
Collecting python-slugifyDownloading python_slugify-6.1.2-py2.py3-none-any.whl (9.4 kB)
Requirement already satisfied: greenlet==1.1.2 in c:\program files\python37\lib\site-packages (from playwright>=1.18->pytest-playwright) (1.1.2)
Requirement already satisfied: websockets==10.1 in c:\program files\python37\lib\site-packages (from playwright>=1.18->pytest-playwright) (10.1)
Requirement already satisfied: typing-extensions in c:\program files\python37\lib\site-packages (from playwright>=1.18->pytest-playwright) (4.2.0)
Requirement already satisfied: pyee==8.1.0 in c:\program files\python37\lib\site-packages (from playwright>=1.18->pytest-playwright) (8.1.0)
Requirement already satisfied: py>=1.8.2 in c:\program files\python37\lib\site-packages (from pytest->pytest-playwright) (1.11.0)
Requirement already satisfied: iniconfig in c:\program files\python37\lib\site-packages (from pytest->pytest-playwright) (1.1.1)
Requirement already satisfied: importlib-metadata>=0.12 in c:\program files\python37\lib\site-packages (from pytest->pytest-playwright) (4.11.4)
Requirement already satisfied: pluggy<2.0,>=0.12 in c:\program files\python37\lib\site-packages (from pytest->pytest-playwright) (1.0.0)
Requirement already satisfied: attrs>=19.2.0 in c:\program files\python37\lib\site-packages (from pytest->pytest-playwright) (21.4.0)
Requirement already satisfied: atomicwrites>=1.0 in c:\program files\python37\lib\site-packages (from pytest->pytest-playwright) (1.4.0)
Requirement already satisfied: packaging in c:\program files\python37\lib\site-packages (from pytest->pytest-playwright) (21.3)
Requirement already satisfied: tomli>=1.0.0 in c:\program files\python37\lib\site-packages (from pytest->pytest-playwright) (2.0.1)
Requirement already satisfied: colorama in c:\program files\python37\lib\site-packages (from pytest->pytest-playwright) (0.4.4)
Requirement already satisfied: requests>=2.9 in c:\program files\python37\lib\site-packages (from pytest-base-url->pytest-playwright) (2.28.0)
Collecting text-unidecode>=1.3Downloading text_unidecode-1.3-py2.py3-none-any.whl (78 kB)---------------------------------------- 78.2/78.2 kB 432.6 kB/s eta 0:00:00
Requirement already satisfied: zipp>=0.5 in c:\program files\python37\lib\site-packages (from importlib-metadata>=0.12->pytest->pytest-playwright) (3.8.0)
Requirement already satisfied: charset-normalizer~=2.0.0 in c:\program files\python37\lib\site-packages (from requests>=2.9->pytest-base-url->pytest-playwright) (2.0.12)
Requirement already satisfied: certifi>=2017.4.17 in c:\program files\python37\lib\site-packages (from requests>=2.9->pytest-base-url->pytest-playwright) (2022.5.18.1)
Requirement already satisfied: idna<4,>=2.5 in c:\program files\python37\lib\site-packages (from requests>=2.9->pytest-base-url->pytest-playwright) (3.3)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\program files\python37\lib\site-packages (from requests>=2.9->pytest-base-url->pytest-playwright) (1.26.9)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in c:\program files\python37\lib\site-packages (from packaging->pytest->pytest-playwright) (3.0.9)
Installing collected packages: text-unidecode, python-slugify, pytest-base-url, pytest-playwright
Successfully installed pytest-base-url-2.0.0 pytest-playwright-0.3.0 python-slugify-6.1.2 text-unidecode-1.3
命令行运行
创建一个Py文件,并在文件中写入如下代码
# test_my_application.py
def test_example_is_working(page):page.goto("https://example.com")assert page.inner_text('h1') == 'Example Domain'page.click("text=More information")
在命令行中执行:
# Run tests (Chromium and headless by default)
pytest
# Run tests in headed mode
pytest --headed
# Run tests in a different browser (chromium, firefox, webkit)
pytest --browser firefox
# Run tests in multiple browsers
pytest --browser chromium --browser webkit
命令行参数介绍
–headed: Run tests in headed mode (default: headless).
–browser: Run tests in a different browser chromium, firefox, or webkit. It can be specified multiple times (default: all browsers).
–browser-channel Browser channel to be used.
–slowmo Run tests with slow mo.
–device Device to be emulated.
–output Directory for artifacts produced by tests (default: test-results).
–tracing Whether to record a trace for each test. on, off, or retain-on-failure (default: off).
–video Whether to record video for each test. on, off, or retain-on-failure (default: off).
–screenshot Whether to automatically capture a screenshot after each test. on, off, or only-on-failure (default: off).
Slow 模式运行
创建一个Py文件,命名为PlaywrightPytest.py
,在文件中写入如下代码
from playwright.sync_api import Pagedef test_visit_admin_dashboard(page: Page):page.goto("http://www.baidu.com")
命令行执行代码:
PS D:\Programs\Python\com.davieyang.demo\PlayWright> pytest .\PlaywrightPytest.py --slowmo 100
======================================= test session starts ================================================
platform win32 -- Python 3.7.9, pytest-7.1.2, pluggy-1.0.0
rootdir: D:\Programs\Python\com.davieyang.demo\PlayWright
plugins: base-url-2.0.0, html-3.1.1, metadata-2.0.1, playwright-0.3.0
collected 1 item PlaywrightPytest.py . [100%]==================================== 1 passed in 2.66s ====================================================
跳过测试用例
# test_my_application.py
import pytest@pytest.mark.skip_browser("firefox")
def test_visit_example(page):page.goto("https://example.com")# ...
指定特殊浏览器执行
代码中指定
# conftest.py
import pytest@pytest.mark.only_browser("chromium")
def test_visit_example(page):page.goto("https://example.com")# ...
命令行指定
PS D:\Programs\Python\com.davieyang.demo\PlayWright> pytest .\PlaywrightPytest.py --browser-channel chrome
================================= test session starts =======================================================
platform win32 -- Python 3.7.9, pytest-7.1.2, pluggy-1.0.0
rootdir: D:\Programs\Python\com.davieyang.demo\PlayWright
plugins: base-url-2.0.0, html-3.1.1, metadata-2.0.1, playwright-0.3.0
collected 1 item PlaywrightPytest.py . [100%]=========================================== 1 passed in 1.96s ============================================
定义base-url
创建Py文件,并写入如下代码
from playwright.sync_api import Pagedef test_visit_admin_dashboard(page: Page):page.goto("category_9732604")
在命令行执行命令
PS D:\Programs\Python\com.davieyang.demo\PlayWright> pytest .\PlaywrightPytest.py --browser-channel chrome --base-url https://blog.csdn.net/dawei_yang000000
============================= test session starts ======================================
platform win32 -- Python 3.7.9, pytest-7.1.2, pluggy-1.0.0
baseurl: https://blog.csdn.net/dawei_yang000000
rootdir: D:\Programs\Python\com.davieyang.demo\PlayWright
plugins: base-url-2.0.0, html-3.1.1, metadata-2.0.1, playwright-0.3.0
collected 1 item PlaywrightPytest.py . [100%]
================================= 1 passed in 2.31s =====================================
忽略HTTPS错误
# conftest.py
import pytest@pytest.fixture(scope="session")
def browser_context_args(browser_context_args):return {**browser_context_args,"ignore_https_errors": True}
自定义分辨率
# conftest.py
import pytest@pytest.fixture(scope="session")
def browser_context_args(browser_context_args):return {**browser_context_args,"viewport": {"width": 1920,"height": 1080,}}
设备模拟
# conftest.py
import pytest@pytest.fixture(scope="session")
def browser_context_args(browser_context_args, playwright):iphone_11 = playwright.devices['iPhone 11 Pro']return {**browser_context_args,**iphone_11,}
也可以在命令行执行加上参数
--device="iPhone 11 Pro"
持久化环境
# conftest.py
import pytest
from playwright.sync_api import BrowserType
from typing import Dict@pytest.fixture(scope="session")
def context(browser_type: BrowserType,browser_type_launch_args: Dict,browser_context_args: Dict
):context = browser_type.launch_persistent_context("./foobar", **{**browser_type_launch_args,**browser_context_args,"locale": "de-DE",})yield contextcontext.close()
结合Unittest单元测试框架执行用例
import pytest
import unittestfrom playwright.sync_api import Pageclass MyTest(unittest.TestCase):@pytest.fixture(autouse=True)def setup(self, page: Page):self.page = pagedef test_foobar(self):self.page.goto("https://microsoft.com")self.page.click("#foobar")assert self.page.evaluate("1 + 1") == 2
Web自动化测试[playwright结合pytest使用]相关推荐
- 【万字长文】2022年最全的搭建Web自动化测试框架教程
测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程.另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人.本章和 ...
- 从0开始搭建Web自动化测试框架
前言: 测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程.另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人 ...
- 大厂年薪43w测试开发手把手教你搭建Web自动化测试框架,超详细
测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程.另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人.本章和 ...
- web自动化测试常见面试题
一.找不到元素可能出现的原因: 1.元素表达式错误 2.不在指定的frame 3.等待时间短,页面加载速度慢 4.执行脚本打开了新的页面,不在指定的窗口中 二.优化web自动化测试效率 避免使用强制等 ...
- Web自动化测试面试
一.Web 自动化测试 1.Selenium 中 hidden 或者是 display = none 的元素是否可以定位到? 不能,可以写 JavaScript 将标签中的 hidden 先改为 0, ...
- 【web自动化测试】
文章目录 web自动化测试 第一章 web自动化入门 1.什么是自动化? 1.1 优点 2.什么是自动化测试? 2.1 自动化测试能解决什么问题? 2.2 自动化相关知识 2.2.1优点 2.2.2 ...
- selenium实现web自动化测试
Web自动化测试 课程大纲 序号 章节 知识点 1 第一章 Web自动化入门 1.认识自动化及自动化测试 2.自动化测试工具选择 3.环境搭建 2 第二章 Selenium-API 1.元素定位方式 ...
- 【Web自动化测试】(二)使用selenium编写测试用例
相关文章链接: [Web自动化测试](一)Selenium介绍及安装部署说明 [Web自动化测试](三)Selenium中控件定位方法 [Web自动化测试](四)Selenium中WEB控件交互的方法 ...
- Web自动化测试如何做?Web自动化测试的详细流程和步骤
一.什么是web自动化测试 自动化(Automation)是指机器设备.系统或过程(生产.管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测.信息处理.分析判断.操纵控制,实现预期的目 ...
最新文章
- ONOS项目首赢11000次下载 Oracle发布云路由
- jquery的常用API汇总
- 二层交换机、三层交换机和路由器的基本工作原理区别—Vecloud
- 熟悉Java String的使用,熟悉String的各种函数,Java中各种变量类型
- 常见HTTP状态(304,200等)
- 满意度调查access模板_洪安镇推进综合便民服务中心标准化建设,着力提升群众满意度...
- SAP License:”事后借记”与第三方外币支付处理
- Cesium.js学习第二天(立方体)
- 深入浅出统计学-第二章
- uni-app平台判断 | uni app判断h5 小程序 app 等不同平台
- JetBrains 提供面向开发人员的免费开源字体 Mono
- 自行设计开源的pdf转word软件(python开发设计)
- ppt转html5原理,如何实现PPT转成H5?
- onenote无法同步的原因E0000007 b4lka
- 6种php加密解密方法
- 新版火狐浏览器安装Flash组件,解决部分网站视频无法观看问题
- 数据挖掘之七种常用的方法
- 给中国学生的第六封信——选择…
- 系统分析与设计之用例图
- 嵌入式面试(笔试)笔记1
热门文章
- GitHub Pages 自定义域名实践整理
- Linux中的查找替换
- EasyRecovery适用于Windows和Mac的专业数据恢复软件
- xshell 7的远程连接
- 计算机毕业设计源码—SpringBoot+Vue鲜花商城
- 猫眼电影MySQL数据库怎么写_猫眼电影和电影天堂数据csv和mysql存储
- Android编译出现com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536错误解决办法
- Java遍历Map集合的第二种方法Entry对象遍历Map集合内元素
- SSTAP 测试讨论
- JS上传文件(base64字符串和二进制文件流)