新一代最强开源UI自动化测试神器Playwright

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

Viewport

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

 
  1. // 创建浏览器上下文并设置浏览器窗口大小

  2. BrowserContext context = browser.newContext(new Browser.NewContextOptions()

  3. .setViewportSize(1280, 1024)

  4. // 设置高DPI

  5. .setDeviceScaleFactor(2));

  6. Page page = context.newPage();

  7. // 重置浏览器窗口大小

  8. page.setViewportSize(1600,1200);

isMobile
 
  1. // 创建浏览器上下文并指定是移动设备的上下文

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

设置语言和时区
 
  1. // 创建浏览器上下文并指定语言和时区

  2. BrowserContext context = browser.newContext(new Browser.NewContextOptions().setLocale("de-DE").setTimezoneId("Europe/Berlin"));

图片

权限

允许应用显示系统通知

 
  1. // 创建浏览器上下文并设置允许应用显示系统通知

  2. BrowserContext context = browser.newContext(new Browser.NewContextOptions().setPermissions(Arrays.asList("notifications")));

允许特定网站的通知

 
  1. // 创建浏览器上下文并设置允许特定网站的通知

  2. BrowserContext context = browser.newContext(new Browser.NewContextOptions().setViewportSize(null));

  3. context.grantPermissions(Arrays.asList("notifications"),new BrowserContext.GrantPermissionsOptions().setOrigin("https://www.cnblogs.com/mrjade/"));

撤销所有权限

context.clearPermissions();
  • 1
设置地理位置
 
  1. BrowserContext context = browser.newContext(new Browser.NewContextOptions()

  2. .setGeolocation(41.890266, 12.492485)//设置地理位置

  3. .setPermissions(Arrays.asList("geolocation")));//授予获取位置权限,如果不设置则会弹出下图的提示信息

图片

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

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

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

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

  2. BrowserContext context = browser.newContext(new Browser.NewContextOptions()

  3. .setColorScheme(ColorScheme.DARK)

  4. .setViewportSize(null));

用深色模式创建页面

 
  1. // 用深色模式创建一个页面

  2. Page page = browser.newPage(new Browser.NewPageOptions().setColorScheme(ColorScheme.DARK));

更改页面的配色文案

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

更改页面的媒体

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

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

User Agent

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

 
  1. // 创建浏览器上下文并设置User Agent

  2. 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));
  • 1
启用和禁用JavaScript
 
  1. BrowserContext context = browser.newContext(new Browser.NewContextOptions()

  2. .javaScriptEnabled(false));

示例代码
 
  1. import com.microsoft.playwright.*;

  2. import java.util.Arrays;

  3. /**

  4. * @author 作者:测试工程师成长之路

  5. * @version 创建时间:2023/7/23

  6. * 类说明:模拟移动设备

  7. */

  8. public class MobileTest {

  9. public static void main(String[] args) {

  10. try (Playwright playwright = Playwright.create()) {

  11. Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions()

  12. .setChannel("chrome")

  13. .setHeadless(false));

  14. BrowserContext context = browser.newContext(new Browser.NewContextOptions()

  15. // 设置User Agent

  16. .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")

  17. .setViewportSize(411, 731) // 设置浏览器窗口大小

  18. .setDeviceScaleFactor(2.625) // 设置DPI(像素)

  19. .setIsMobile(true) // 设置为移动设备

  20. .setHasTouch(true) // 设置为可触屏

  21. .setLocale("en-US") // 设置地区

  22. .setGeolocation(41.889938, 12.492507) // 设置地理位置

  23. .setPermissions(Arrays.asList("geolocation"))); // 授予获取位置权限

  24. Page page = context.newPage();

  25. page.navigate("https://map.baidu.com");

  26. Thread.sleep(50000);

  27. } catch (InterruptedException e) {

  28. e.printStackTrace();

  29. }

  30. }

  31. }

图片

 如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值