前言
我们在工作中,会遇到需要使用不同的硬件设备测试兼容性的问题,尤其是现在手机型号,屏幕大小分辨率五花八门的,我们基本不可能全部机型都用真机测试一遍,playwright提供了模仿机型的功能,我们可以使用playwright来模拟设备。
设置手机模式
配置需要模拟的设备,我们需要配置我们使用的设备,Playwright 就会模拟浏览器行为,例如"userAgent"、"screenSize"以及"viewport"是否"hasTouch"启用。
还可以为所有测试或特定测试模拟,以及设置以"geolocation"显示通知或更改."locale""timezone""permissions""colorScheme"
Playwright使用playwright.devices为选定的台式机、平板电脑和移动设备提供设备参数注册表。
它可用于模拟特定设备的浏览器行为,例如用户代理、屏幕尺寸、视口以及是否启用了触摸。所有测试都将使用指定的设备参数运行。
示例代码如下:
代码语言:python代码运行次数:0复制from playwright.sync_api import sync_playwright
def run(playwright):
iphone_11 = playwright.devices['iPhone 11']
browser = playwright.chromium.launch(headless=False)
context = browser.new_context(
**iphone_11,
)
page = context.new_page()
page.goto('https://m.baidu.com')
page.pause()
with sync_playwright() as playwright:
run(playwright)
运行之后,结果如下图所示:
pytest-playwright测试用例
在pytest-playwright 测试用例中可以通过重写browser_context_args 来实现模拟各种设备。我们可以在conftest.py中确认需要模拟的设备,代码如下:
代码语言:python代码运行次数:0复制# conftest.py
import pytest
@pytest.fixture(scope="session")
def browser_context_args(browser_context_args, playwright):
iphone_12 = playwright.devices['iPhone 12']
return {
**browser_context_args,
**iphone_12,
}
用例如下:
代码语言:python代码运行次数:0复制from playwright.sync_api import Page
def test_m_baidu(page: Page):
page.goto("https://m.baidu.com/")
这样我们就可以实现使用playwright来指定设备来运行脚本。
总结
本文主要讲解了使用playwright模拟各种硬件设备的方法,我们可以使用这个方法模拟各种硬件设备,方便我们进行兼容性的测试。