安装配置环境

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使用]相关推荐

  1. 【万字长文】2022年最全的搭建Web自动化测试框架教程

    测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程.另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人.本章和 ...

  2. 从0开始搭建Web自动化测试框架

    前言: 测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程.另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人 ...

  3. 大厂年薪43w测试开发手把手教你搭建Web自动化测试框架,超详细

    测试框架的设计有两种思路,一种是自底向上,从脚本逐步演变完善成框架,这种适合新手了解框架的演变过程.另一种则是自顶向下,直接设计框架结构和选取各种问题的解决方案,这种适合有较多框架事件经验的人.本章和 ...

  4. web自动化测试常见面试题

    一.找不到元素可能出现的原因: 1.元素表达式错误 2.不在指定的frame 3.等待时间短,页面加载速度慢 4.执行脚本打开了新的页面,不在指定的窗口中 二.优化web自动化测试效率 避免使用强制等 ...

  5. Web自动化测试面试

    一.Web 自动化测试 1.Selenium 中 hidden 或者是 display = none 的元素是否可以定位到? 不能,可以写 JavaScript 将标签中的 hidden 先改为 0, ...

  6. 【web自动化测试】

    文章目录 web自动化测试 第一章 web自动化入门 1.什么是自动化? 1.1 优点 2.什么是自动化测试? 2.1 自动化测试能解决什么问题? 2.2 自动化相关知识 2.2.1优点 2.2.2 ...

  7. selenium实现web自动化测试

    Web自动化测试 课程大纲 序号 章节 知识点 1 第一章 Web自动化入门 1.认识自动化及自动化测试 2.自动化测试工具选择 3.环境搭建 2 第二章 Selenium-API 1.元素定位方式 ...

  8. 【Web自动化测试】(二)使用selenium编写测试用例

    相关文章链接: [Web自动化测试](一)Selenium介绍及安装部署说明 [Web自动化测试](三)Selenium中控件定位方法 [Web自动化测试](四)Selenium中WEB控件交互的方法 ...

  9. Web自动化测试如何做?Web自动化测试的详细流程和步骤

    一.什么是web自动化测试 自动化(Automation)是指机器设备.系统或过程(生产.管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测.信息处理.分析判断.操纵控制,实现预期的目 ...

最新文章

  1. ONOS项目首赢11000次下载 Oracle发布云路由
  2. jquery的常用API汇总
  3. 二层交换机、三层交换机和路由器的基本工作原理区别—Vecloud
  4. 熟悉Java String的使用,熟悉String的各种函数,Java中各种变量类型
  5. 常见HTTP状态(304,200等)
  6. 满意度调查access模板_洪安镇推进综合便民服务中心标准化建设,着力提升群众满意度...
  7. SAP License:”事后借记”与第三方外币支付处理
  8. Cesium.js学习第二天(立方体)
  9. 深入浅出统计学-第二章
  10. uni-app平台判断 | uni app判断h5 小程序 app 等不同平台
  11. JetBrains 提供面向开发人员的免费开源字体 Mono
  12. 自行设计开源的pdf转word软件(python开发设计)
  13. ppt转html5原理,如何实现PPT转成H5?
  14. onenote无法同步的原因E0000007 b4lka
  15. 6种php加密解密方法
  16. 新版火狐浏览器安装Flash组件,解决部分网站视频无法观看问题
  17. 数据挖掘之七种常用的方法
  18. 给中国学生的第六封信——选择…
  19. 系统分析与设计之用例图
  20. 嵌入式面试(笔试)笔记1

热门文章

  1. GitHub Pages 自定义域名实践整理
  2. Linux中的查找替换
  3. EasyRecovery适用于Windows和Mac的专业数据恢复软件
  4. xshell 7的远程连接
  5. 计算机毕业设计源码—SpringBoot+Vue鲜花商城
  6. 猫眼电影MySQL数据库怎么写_猫眼电影和电影天堂数据csv和mysql存储
  7. Android编译出现com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536错误解决办法
  8. Java遍历Map集合的第二种方法Entry对象遍历Map集合内元素
  9. SSTAP 测试讨论
  10. JS上传文件(base64字符串和二进制文件流)