《刚刚问世》系列初窥篇-Java+Playwright自动化测试-9- 浏览器的相关操作 (详细教程)

news/2025/1/5 14:52:26/文章来源:https://www.cnblogs.com/du-hong/p/18349063

1.简介

在自动化测试领域,元素定位是非常重要的一环。正确定位页面元素是测试用例能否成功执行的关键因素之一。playwright是一种自动化测试工具,它提供了丰富的元素定位方法,可以满足不同场景下的定位需求。前边宏哥已经通过不少的篇幅将playwright的元素定位的一些常用的基本方法和高级技巧基本介绍的差不多了,但是在Web端的UI自动化的测试中,我们通常需要使用一些方法来操作浏览器,用来模拟人工操作浏览器。今天就跟随宏哥学习了解一下。这一篇宏哥主要是介绍一下,在自动化测试的时候,我们常见的一些浏览器操作有哪些,宏哥将会一一介绍和讲解。

2.层级

在介绍浏览器的相关操作之前,宏哥先介绍一下层级,宏哥理解的其实就是操作层级,不对的话,欢迎批评指正。在Playwright中,测试层级为:

Broswer->Context->Page

以上层级和在Python中介绍的一模一样,因为都是playwright,换汤不换药,这里只不过是将Python语言变成了Java语言。

3.浏览器操作

宏哥首先介绍一下浏览器常用的基本操作,然后再通过具体实例给小伙伴或者童鞋们演示一下。既然是浏览器的操作,那首先得将浏览器启动(打开)才能操作,但是要打开或者启动浏览器需要安装浏览器驱动,因此首先介绍一下playwright如何安装浏览器驱动。

3.1安装浏览器驱动

默认安装三大浏览器驱动webkit、chromium、firefox ,这里不需要我们考虑驱动的版本和浏览器的版本是否匹配,这个就比selenium方便多了。这里宏哥就不赘述了,可以看宏哥前边的文章自行安装即可!当然代码中也会自动检测是否存在驱动,不存在就会自动安装,但取决于网路问题,经常会失败。一般都可以自动安装成功,如果不成功,你可以自己查找资料手动安装。宏哥前边介绍的就是代码自动检测,然后自动安装,宏哥推荐这种方法。如果实在不成功,你可以多尝试几遍。

3.2启动浏览器

浏览器是通过BrowserType.launch() 创建的。使用浏览器创建公共主页的示例:

import com.microsoft.playwright.*;public class Example {public static void main(String[] args) {try (Playwright playwright = Playwright.create()) {BrowserType firefox = playwright.firefox()Browser browser = firefox.launch();Page page = browser.newPage();page.navigate('https://example.com');browser.close();}}
}

3.3相关方法

3.3.1browserType

获取浏览器所属的浏览器类型(chromium、firefox 或 webkit)。

//Usage

Browser.browserType();//Returns

BrowserType
3.3.2close

如果此浏览器是使用 BrowserType.launch() 获取的,则关闭浏览器及其所有页面(如果已打开)。

如果此浏览器已连接,将清除属于此浏览器的所有已创建上下文,并断开与浏览器服务器的连接。

敲黑板!!!注意:这类似于强制退出浏览器。因此,在调用 Browser.close() 之前,您应该在之前使用 Browser.newContext() 显式创建的任何 BrowserContext 上调用 BrowserContext.close()。

//Usage

Browser.close();
Browser.close(options);//Arguments

options Browser.CloseOptions (optional)
setReason String (optional) Added in: v1.40#The reason to be reported to the operations interrupted by the browser closure.//Returnsvoid
3.3.3contexts

返回所有打开的浏览器上下文的数组。在新创建的浏览器中,这将返回零个浏览器上下文。

//Usage

Browser browser = pw.webkit().launch();
System.out.println(browser.contexts().size()); // prints "0"
BrowserContext context = browser.newContext();
System.out.println(browser.contexts().size()); // prints "1"//Returns

List<BrowserContext>

3.4查看浏览器UI

要查看浏览器UI,在启动浏览器时传递 headless=false 标志。

Playwright playwright = Playwright.create();
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false));
Page page = browser.newPage();

3.5减慢执行速度

可以使用 slowMo 来减慢执行速度。在调试工具部分了解更多信息。

Playwright playwright = Playwright.create();
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setSlowMo(50));
Page page = browser.newPage();

3.6访问跳转页面

page.navigate("http://playwright.dev");

3.7刷新、前进和后退

Page.reload()
Page.goBack()
Page.goForward()

3.8设置浏览器窗口大小

窗口包含在设备中,但您可以使用 Page.setViewportSize() 在某些测试中覆盖它。

// Create context with given viewport
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setViewportSize(1280, 1024));// Resize viewport for individual page
page.setViewportSize(1600, 1200);// Emulate high-DPI
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setViewportSize(2560, 1440).setDeviceScaleFactor(2);

3.9配置浏览器

在不同的浏览器上运行测试。

3.9.1特定浏览器运行
import com.microsoft.playwright.*;public class Example {public static void main(String[] args) {try (Playwright playwright = Playwright.create()) {// Launch chromium, firefox or webkit.Browser browser = playwright.chromium().launch();Page page = browser.newPage();// ...
    }}
}
3.9.2多个浏览器运行
import com.microsoft.playwright.*;public class Example {public static void main(String[] args) {try (Playwright playwright = Playwright.create()) {Browser browser = null;String browserName = System.getenv("BROWSER");if (browserName.equals("chromium")) {browser = playwright.chromium().launch();} else if (browserName.equals("firefox")) {browser = playwright.firefox().launch();} else if (browserName.equals("webkit")) {browser = playwright.webkit().launch();}Page page = browser.newPage();// ...
    }}
}

4.项目实战

以度娘为例,首先启动浏览器,然后再设置浏览器的大小。查询“北京宏哥”后,刷新页面执行回退到百度首页,然后有执行前进进入到搜索“北京宏哥”页面,最后退出浏览器。

4.1代码设计

4.2参考代码

package com.bjhg.playwright;import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;/*** @author 北京-宏哥* * @公众号:北京宏哥(微信搜索,关注宏哥,提前解锁更多测试干货)* * 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-9- 浏览器的相关操作 (详细教程)** 2024年8月16日*/
public class Test_Search {public static void main(String[] args) {try (Playwright playwright = Playwright.create()) {//1.使用chromium浏览器,# 浏览器配置,设置以GUI模式启动Chrome浏览器(要查看浏览器UI,在启动浏览器时传递 headless=false 标志。您还可以使用 slowMo 来减慢执行速度。Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(500));//2.设置浏览器窗口大小BrowserContext context = browser.newContext(new Browser.NewContextOptions().setViewportSize(1280, 1024));//创建pagePage page = context.newPage();//3.浏览器打开百度page.navigate("https://www.baidu.com/");//判断title是不是 百度一下,你就知道try{String baidu_title = "百度一下,你就知道";assert baidu_title == page.title();System.out.println("Test Pass");}catch(Exception e){e.printStackTrace();}//使用xpath属性定位百度首页输入框 ,并输入搜索内容:北京-宏哥page.locator("//*[@id='kw']").type("北京-宏哥"); //使用路径与属性结合定位“百度一下”按钮,并点击 。page.locator("//span/input[@id='su']").click();// 5.刷新页面
          page.reload();// 6.浏览器后退
          page.goBack();// 7.浏览器前进
          page.goForward();//关闭page
          page.close();//关闭browser
          browser.close();}}}

4.3运行代码

1.运行代码,右键Run'Test',就可以看到控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作(先访问后搜索宏哥,然后刷新,后退到百度首页,然后再前进搜素宏哥的页面)。如下图所示:

5.小结

好了,关于浏览器的相关操作非常简单,时间不早了今天就分享到这里,感谢你耐心地阅读!

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

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

相关文章

ModBus功能码异常和功能码错误代码

参考来源: https://www.cnblogs.com/hi-9527/p/16308588.htmlModbus功能码异常功能码错误码Modbus协议主要构成是地址码/标识码,功能码,寄存器地址,数据报文等内容。由于modbus协议是请求/应答通信协议,其其中功能码主要用于表述该数据报文执行的功能,当服务器对客户机进…

PACT: Parameterized Clipping Activation for Quantized Neural Networks

目录概主要内容Choi J., Wang Z., Venkataramani S., Chuang P. I., Srinivasan V. and Gopalakrishnan K. PACT: Parameterized clipping activation for quantized neural networks. 2018.概 本文提出对网络中的激活值进行裁剪以实现更低量化. 主要内容作者的思想很简单, 作者…

DeskHIL桌面级仿真测试平台

敏捷开发和持续集成持续发布逐渐成为汽车电子系统主流开发模式。在此大背景下,研发过程中研发与测试的结合越来越紧密。硬件在环仿真测试系统,一直是汽车电子研发过程中的重要基础测试工具,测试工具如何应对敏捷开发模式下测试工具快速集成、快速测试的要求?对行业来说是一…

jib打包镜像,docker-compose启动报错

问题描述jib打包推送到harbor后,启动找不到启动脚本文件 docker-test-1 | exec /entrypoint.sh: no such file or directory entrypoint 原docker-compose配置:test:image: "xxxxxxxxx"environment:- TZ=Asia/Shanghai- JAVA_OPTS=-Xms3g -Xmx4gprivileged: truepo…

鲲鹏服务器屏蔽告警的方法

描述:工程现场发现设备开启snmp v2c后会有不安全协议告警,且客户侧纳管平台会一直存在这个告警。解决:手动干预进行告警屏蔽ipmitool raw 0x30 0x90 0x58 0x01 0x00 0x06 0x00 0x49 0x00 0x00 0x1A 0x00 0x02已知故障码是0x1A000049,而上面标红部分是故障码0x49 0x00 0x00 …

谷歌为什么将在2025年主导人工智能

谷歌通往AI霸主地位的路径图片由谷歌Imagen 3生成2023年2月6日,谷歌首席执行官桑达尔皮查伊在巴黎登台,展示了谷歌的首款AI驱动聊天机器人Bard。 Bard出现了“幻觉”。 演示失败了,谷歌母公司Alphabet市值蒸发了1000亿美元。 在2023年的大部分时间里,谷歌似乎在人工智能创新…

window redis注册为服务

1.将redis安装目录添加到环境变量中 2.在redis安装目录执行如下命令: redis-server.exe --service-install redis.windows.conf --loglevel verbose 3.成功后,即可在服务列表中查看到该服务 抱怨有用的话还要努力干什么

linux 优化网卡队列

RSS(Receive-Side Scaling)网卡的多队列负载分流技术为了更好的利用多核系统。可以将网卡的数据流分配到多个rx queue,多个队列再分配到多个CPU核上,多个CPU并 行处理数据包,大大提升网络处理能力。但是有可能造成同一个网络会话被分配到多 个rx queue上,导致应用层处理会…

Nginx-WMware安装 c

CentOS-7-x86_64-Minimal-1810.iso镜像下载地址 通过网盘分享的文件:CentOS-7-x86_64-Minimal-1810.iso 链接: https://pan.baidu.com/s/1As2tckziAeVVF7sNJkZSlA?pwd=sky1 提取码: sky1 一、新建虚拟机二、选择 “典型”三、选择刚刚下载的 CentOS-7-x86_64-Minimal-1810的I…

读数据保护:工作负载的可恢复性24磁带和其他

磁带和其他1. 速度不匹配 1.1. 磁带机的速度曾经比备份数据的生成速度慢,而且那时磁带机的速度也比网络速度要慢 1.2. 备份行业就把磁带上的磁位排得比原来更加紧密 1.2.1. 磁位排得密,意味着磁带在不增加长度的情况下能够存储更多的数据 1.2.2. 磁位紧密,同时还意味着磁头在…

宝塔Linux专业版后台帝国CMS更新栏目出现404错误怎么办?

在使用宝塔Linux专业版管理多个站点时,可能会遇到帝国CMS更新栏目时出现404错误的问题。这类问题往往会给日常运维带来不便,因此我们需要仔细分析原因并采取有效的解决措施。以下是详细的解决方案:检查PHP版本兼容性:首先,确认帝国CMS所依赖的PHP版本是否与当前服务器环境…

如何选择适合的云主机配置以满足网站流量需求?

您好,关于您提到的如何选择适合的云主机配置以满足网站流量需求的问题,我们可以从多个角度进行详细探讨,帮助您做出最优选择。 首先,根据您提供的数据(IP 3万多,PV 5万左右,流量每天不到5G),我们来分析一下这些指标对服务器配置的具体要求:CPU和内存:对于日均IP访问…