软件测试|web自动化测试神器playwright教程(十三)

发布时间 2023-08-02 17:13:36作者: 霍格沃兹测试开发学社

前言

我们在工作中,会遇到需要使用不同的硬件设备测试兼容性的问题,尤其是现在手机型号,屏幕大小分辨率五花八门的,我们基本不可能全部机型都用真机测试一遍,playwright提供了模仿机型的功能,我们可以使用playwright来模拟设备。

设置手机模式

配置需要模拟的设备,我们需要配置我们使用的设备,Playwright 就会模拟浏览器行为,例如"userAgent"、"screenSize"以及"viewport"是否"hasTouch"启用。

还可以为所有测试或特定测试模拟,以及设置以"geolocation"显示通知或更改."locale""timezone""permissions""colorScheme"

Playwright使用playwright.devices为选定的台式机、平板电脑和移动设备提供设备参数注册表。
它可用于模拟特定设备的浏览器行为,例如用户代理、屏幕尺寸、视口以及是否启用了触摸。所有测试都将使用指定的设备参数运行。

示例代码如下:

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中确认需要模拟的设备,代码如下:

# 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,
    }

用例如下:

from playwright.sync_api import Page


def test_m_baidu(page: Page):
    page.goto("https://m.baidu.com/")

这样我们就可以实现使用playwright来指定设备来运行脚本。

总结

本文主要讲解了使用playwright模拟各种硬件设备的方法,我们可以使用这个方法模拟各种硬件设备,方便我们进行兼容性的测试。

获取更多技术资料,请点击!