(Java版)新一代最强开源UI自动化测试神器Playwright(模拟移动设备和浏览器行为)

使用 Playwright,你可以在任何浏览器上测试你的应用程序,也可以模拟真实设备,例如手机或平板电脑。只需配置你想要模拟的设备,Playwright 就会模拟浏览器行为,例如“userAgent”、“screenSize”、“viewport”以及是否启用了“hasTouch”。你还可以为所有测试或特定测试模拟“地理位置”、“区域设置”和“时区”,以及设置“权限”以显示通知或更改“colorScheme”。

Viewport

viewport包含在设备中,但是你可以使用Page.setViewportSize()来重新设置它。

// 创建浏览器上下文并设置浏览器窗口大小
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setViewportSize(1280, 1024)// 设置高DPI.setDeviceScaleFactor(2));
Page page = context.newPage();
// 重置浏览器窗口大小
page.setViewportSize(1600,1200);

isMobile

// 创建浏览器上下文并指定是移动设备的上下文
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setIsMobile(true));

设置语言和时区

// 创建浏览器上下文并指定语言和时区
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setLocale("de-DE").setTimezoneId("Europe/Berlin"));

图片

权限

允许应用显示系统通知

// 创建浏览器上下文并设置允许应用显示系统通知
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setPermissions(Arrays.asList("notifications")));

允许特定网站的通知

// 创建浏览器上下文并设置允许特定网站的通知
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setViewportSize(null));
context.grantPermissions(Arrays.asList("notifications"),new BrowserContext.GrantPermissionsOptions().setOrigin("https://www.cnblogs.com/mrjade/"));

撤销所有权限

context.clearPermissions();

设置地理位置

BrowserContext context = browser.newContext(new Browser.NewContextOptions().setGeolocation(41.890266, 12.492485)//设置地理位置.setPermissions(Arrays.asList("geolocation")));//授予获取位置权限,如果不设置则会弹出下图的提示信息

图片

设置网站显示颜色(深色或浅色)

模拟用户的“配色方案”。支持’light’, ‘dark’, ‘no-preference’。你还可以使用page.emulatemmedia()模拟媒体类型。

用深色模式创建浏览器上下文

# 用深色模式创建浏览器上下文
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setColorScheme(ColorScheme.DARK).setViewportSize(null));

用深色模式创建页面

// 用深色模式创建一个页面
Page page = browser.newPage(new Browser.NewPageOptions().setColorScheme(ColorScheme.DARK));

更改页面的配色文案

page.emulateMedia(new Page.EmulateMediaOptions().setColorScheme(ColorScheme.DARK));

更改页面的媒体

page.emulateMedia(new Page.EmulateMediaOptions().setMedia(Media.PRINT));
page.emulateMedia(new Page.EmulateMediaOptions().setMedia(Media.SCREEN));

User Agent

用户代理包含在设备中,因此你很少需要更改它,但是如果你确实需要测试不同的用户代理,你可以使用 userAgent 属性覆盖它。

// 创建浏览器上下文并设置User Agent
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setUserAgent("Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36"));

模拟网络离线

BrowserContext context = browser.newContext(new Browser.NewContextOptions().setOffline(true));

启用和禁用JavaScript

BrowserContext context = browser.newContext(new Browser.NewContextOptions().javaScriptEnabled(false));

示例代码

import com.microsoft.playwright.*;
import java.util.Arrays;/*** @author 作者:测试工程师成长之路* @version 创建时间:2023/7/23* 类说明:模拟移动设备*/
public class MobileTest {public static void main(String[] args) {try (Playwright playwright = Playwright.create()) {Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("chrome").setHeadless(false));BrowserContext context = browser.newContext(new Browser.NewContextOptions()// 设置User Agent.setUserAgent("Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3765.0 Mobile Safari/537.36").setViewportSize(411, 731) // 设置浏览器窗口大小.setDeviceScaleFactor(2.625)  // 设置DPI(像素).setIsMobile(true) // 设置为移动设备.setHasTouch(true) // 设置为可触屏.setLocale("en-US") // 设置地区.setGeolocation(41.889938, 12.492507)  // 设置地理位置.setPermissions(Arrays.asList("geolocation")));  // 授予获取位置权限Page page = context.newPage();page.navigate("https://map.baidu.com");Thread.sleep(50000);} catch (InterruptedException e) {e.printStackTrace();}}
}

图片

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/215026.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HashMap的实现原理,HashMap方法详解,hash()计算的原理,扩容机制

文章目录 说一下HashMap的实现原理(非常重要)①HashMap的工作原理HashMap存储结构常用的变量HashMap 构造函数tableSizeFor() put()方法详解hash()计算原理resize() 扩容机制get()方法为什么HashMap链表会形成死循环 说一下HashMap的实现原理(非常重要) HashMap概述&#xff1…

RevCol:可逆的柱状神经网络

文章目录 摘要1、简介2、方法2.1、Multi-LeVEl ReVERsible Unit2.2、可逆列架构2.2.1、MACRo设计2.2.2、MicRo 设计 2.3、中间监督 3、实验部分3.1、图像分类3.2、目标检测3.3、语义分割3.4、与SOTA基础模型的系统级比较3.5、更多分析实验3.5.1、可逆列架构的性能提升3.5.2、可…

解决在Windows10或Windows11下无权限修改hosts文件

解决在Windows10或Windows11下无权限修改hosts文件,无法写入内容 1、首先在开始菜单中找到这个 2、接着输入: C:\Windows\System32\drivers\etc3、再次输入以下命令行:notepad hosts ,并回车: notepad hosts 4、然后…

gitlab各版本安装注意点:

研发团队在安装gitlab各版本过程中可能遇到各种问题,为了后续容易查看特将我们在实践过程中遇到的各类问题要点总结如下: gitlab 10.8.3 (564c342)安装 centos Linux yum安装网址查找网址:gitlab/gitlab-ce - Results for gitla…

无需API开发,钱方QFPay连接营销系统和广告推广平台

随着电子商务市场的不断发展,企业需要集成各种业务系统,以提高业务效率和降低运营成本。钱方QFPay提供了一种创新的解决方案,帮助企业实现系统间的连接和集成,无需进行复杂的API开发。除了电商系统和客服系统,钱方还能…

openstack(2)

目录 块存储服务 安装并配置控制节点 安装并配置一个存储节点 验证操作 封装镜像 上传镜像 块存储服务 安装并配置控制节点 创建数据库 [rootcontroller ~]# mysql -u root -pshg12345 MariaDB [(none)]> CREATE DATABASE cinder; MariaDB [(none)]> GRANT ALL PR…

主播产品转场(款)话术

直播转场话术要点 在直播过程中,转场话术是非常重要的一部分。它可以帮助主播J顺利地将一个主题或场景过渡到另一个主题或场景,同时吸引观众的注意力。提高直播的观赏性和互动性。以下是一些直播转场话术的要点: 一、过渡性话语 过渡性话语是连接两个…

9.输出国际象棋盘【2023.11.24】

1.问题描述 要求输出国际象棋棋盘。 2.解决思路 国际象棋棋盘由64个黑白相间的格子组成&#xff0c;分为8行*8列。用i控制行&#xff0c;j控制列&#xff0c;根据ij的和的变化来控制输出黑方格还是白方格。 3.代码实现 #include<stdio.h> int main(){for(int i0;i&…

举个栗子!Quick BI 技巧(4):创建面积图

面积图又叫区域图&#xff0c;是在折线图的基础之上形成的, 它将折线图中折线与自变量坐标轴之间的区域使用颜色或者纹理填充&#xff0c;这样一个填充区域我们叫做面积&#xff0c;颜色的填充也可以更好的突出趋势信息。 有数据粉好奇如何使用 Quick BI 来制作面积图&#xf…

Spark---基于Yarn模式提交任务

Yarn模式两种提交任务方式 一、yarn-client提交任务方式 1、提交命令 ./spark-submit --master yarn --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100 或者 ./spark-submit --master yarn–client --class org.apache.s…

额温枪方案,MS8551,MS8601;MS1112,MS1100

鉴于测温的传感器信号非常微弱&#xff0c;需要用高精度、低噪声的运算放大器和高精度、低功耗的ADC。 运算放大器可供选择&#xff1a;MS8551 or MS8601&#xff0c;具有低失调&#xff08;1uV&#xff09;、低噪&#xff08;22nV√Hz &#xff09;、封装小等优点&#xff0c…

佳易王个体诊所管理系统电子处方软件,诊所系统软件有哪些,佳易王门诊病历电子处方 软件教程

佳易王个体诊所管理系统电子处方软件&#xff0c;诊所系统软件有哪些&#xff0c;佳易王门诊病历电子处方 软件教程 上图&#xff0c;软件不仅可以打印电子处方&#xff0c;而且可以记录病历和病历查询。 上图&#xff0c;软件支持中医和西医处方打印&#xff0c;上图为西医打印…