《刚刚问世》系列初窥篇-Java+Playwright自动化测试-9- 浏览器的相关操作 (详细教程)
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. //Returns void
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));
//创建page
Page 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.小结
好了,关于浏览器的相关操作非常简单,时间不早了今天就分享到这里,感谢你耐心地阅读!
《刚刚问世》系列初窥篇-Java+Playwright自动化测试-9- 浏览器的相关操作 (详细教程)的更多相关文章
- 《手把手教你》系列技巧篇(五十四)-java+ selenium自动化测试-上传文件-中篇(详细教程)
		1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等.所以宏哥打算按上传文件的分类对其进行一下讲解和分享. 2.为什么selenium没有提供 ... 
- 《手把手教你》系列技巧篇(五十五)-java+ selenium自动化测试-上传文件-下篇(详细教程)
		1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等.所以宏哥打算按上传文件的分类对其进行一下讲解和分享. 2.为什么selenium没有提供 ... 
- 《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)
		1.简介 前面介绍了POI可以操作excel,也简单的提到另一个操作excle的工具,本篇介绍一个其他的可以操作excel的工具,但是这个工具有一个前提,excel文件版本只能是97-2003版本,如 ... 
- 《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 - 下篇(详细教程)
		1.简介 今天继续操作Excle,小伙伴或者童鞋们是不是觉得宏哥会介绍第三种工具操作Excle,今天不介绍了,有两种就够用了,其实一种就够用了,今天主要是来介绍如何使用不同的数据类型读取Excel文件 ... 
- 《手把手教你》系列技巧篇(六)-java+ selenium自动化测试-阅读selenium源码(详细教程)
		1.简介 前面几篇基础系列文章,足够你迈进了Selenium门槛,再不济你也至少知道如何写你第一个基于Java的Selenium自动化测试脚本.接下来宏哥介绍Selenium技巧篇,主要是介绍一些常用 ... 
- 《手把手教你》系列技巧篇(五十三)-java+ selenium自动化测试-上传文件-上篇(详细教程)
		1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等.所以宏哥打算按上传文件的分类对其进行一下讲解和分享. 2.为什么selenium没有提供 ... 
- 《手把手教你》系列技巧篇(六十六)-java+ selenium自动化测试 - 读写excel文件 - 上篇(详细教程)
		1.简介 在自动化测试,有些我们的测试数据是放到excel文件中,尤其是在做数据驱动测试的时候,所以需要懂得如何操作获取excel内的内容.由于java不像python那样有直接操作Excle文件的类 ... 
- 《手把手教你》系列技巧篇(四十一)-java+ selenium自动化测试 - 处理iframe -上篇(详解教程)
		1.简介 原估计宏哥这里就不对iframe这个知识点做介绍和讲解了,因为前边的窗口切换就为这种网页处理提供了思路,另一个原因就是虽然iframe很强大,但是现在很少有网站用它了.但是还是有小伙伴或者童 ... 
- 《手把手教你》系列技巧篇(四十二)-java+ selenium自动化测试 - 处理iframe -下篇(详解教程)
		1.简介 经过宏哥长时间的查找,终于找到了一个含有iframe的网页.所以今天这一篇的主要内容就是用这个网页的iframe,宏哥给小伙伴或者童鞋们演示一下,在处理过程中遇到的问题以及宏哥是如何解决的. ... 
- 《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)
		1.简介 在Web自动化的操作中,我们通常需要使用一些方法来操作浏览器,今天就来学习一下.这一篇宏哥主要是介绍一下,在自动化测试的时候,我们常见的一些浏览器操作有哪些,宏哥将会一一介绍和讲解. 2.浏 ... 
随机推荐
- web端ant-design-vue-Anchor锚点组件使用小节(1)
			web端ant-design-vue-Anchor锚点组件使用小节.项目开发中如果要实现前端页面平滑滚动到指定的位置,Anchor组件是一个好的选择,灵活且平滑,能满足常见的项目需求.最近开发中幸运的 ... 
- 别再售卖 5块钱 的 Win10 激活码了,后果很严重
			为了推广Windows 10系统(以下简称Win10),微软过去几年中一直给免费升级,Win7免费洗白的策略现在都还管用. 微软的大方也让很多人忘了Win10系统是要收费的,而且价格不便宜,国内的话, ... 
- 修改Linux服务的文件打开句柄数
			在bash中,有个ulimit命令,提供了对shell及该shell启动的进程的可用资源控制.主要包括打开文件描述符数量.用户的最大进程数量.coredump文件的大小等. 在centos 5/6 等 ... 
- 《一篇就够系列》之HTTP详解,覆盖高频面试考点!
			一.写在开头 前几篇博文大概介绍了什么是网络编程,以及网络编程的实战作用,今日起,我们将针对里面涉及到的重要知识点,进行详细的梳理与学习! 在整个WEB编程中,有个应用层的协议是我们无法跳过的,那就是 ... 
- Centos7安装部署prometheus
			普罗米修斯的主要特点是: 具有由度量名称和键/值对标识的时间序列数据的多维数据模型 PromQL,一种灵活的查询语言, 可以利用这一维度 不依赖分布式存储; 单个服务器节点是自治的 时间序列集合通过H ... 
- Mysql数据库笔记整理
			数据库-理论基础 1.什么是数据库? 数据:描述事物的符号记录,可以是数字.文字.图形.图像.声音.语言等,数据有多种形式,它们都可以经过数字化后存入计算机. 数据库:存储数据的仓库,是长期存放在计算 ... 
- 用“tar | split ”将文件分包压缩
			1.一次打包: tar cjf - directory/ | split -b 100m -d -a 1 - filename.tar.bz2. (directory/):待压缩的目录名. (spli ... 
- position 的值, relative 和 absolute 分别是相对于谁进行定位的?
			relative: 相对定位 相对于自己本身在正常文档流中的位置进行定位 相对它原来的位置.原来在标准流中的位置继续占有. absolute: 绝对定位 相对于最近一级定位不为static的父元素进 ... 
- 你的WAF是否真的安全?雷池社区版的安全能力测试
			你的WAF能力如何?雷池社区版的安全能力测试 最近雷池社区版很火,各大技术群都在讨论 什么是雷池? 引用官网文档的一段话: SafeLine,中文名 "雷池",是一款简单好用, 效 ... 
- 企业网站应配置怎样的SSL证书
			企业网站在选择和配置SSL证书时,需要考虑多个因素以确保网站的数据传输安全.身份验证和用户信任度.以下是对企业网站应配置怎样的SSL证书的详细分析: 一.SSL证书的基本概念 SSL证书是一种数字证书 ... 
