写在前面

今天是国庆节的最后一天,明天又要上班了,真的是感觉好像才开始放假一样,还是因为失恋没缓过来吗?

我的国庆七天

第1天,当了近半天的司机,陪家人去各大超市去购物,下午在家躺·····

第2-5天,重感冒,鼻涕不止,浑身酸痛乏力,两卷卫生纸下去,鼻子已经废了,真的是躺平了······

第6天,打嗝不止,干咳、嗓子发炎肿了、鼻子烧了、嗓子基本说不出话了······

综上,真的这个假期过的好累,算是大病一场吗?

该做点什么

早上6点20醒了,刷了一集《请君》,觉得状态还不错,还是写点东西吧,也算找找状态吧。

不管经历过什么,孰对孰错,生活还是要继续的,和自己和解,要学习的还有很多,充实过好每一天即可。

Playwright之浏览器操作

基础参数

这系列的文章还要继续下去的,那么接下来要进行浏览器部分的操作了。

1、创建浏览器对象

示例代码如下:

//默认为无头浏览器方式启动
browser = playwright.chromium().launch();
//参数设定方式启动
browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(true).setSlowMo(5000));

2、创建浏览器上下文

context = browser.newContext();

3、创建Page对象

一般来说,一个page对应一个浏览器选项卡,这点和selenium有点像,也可以说是比selenium分的更细致?

示例如下:

page = context.newPage();

浏览操作

1、浏览器最大化

这里以chrome浏览器为例,示例代码如下:

 Playwright playwright = Playwright.create();
//看到某博主写的python版的加--start-maximized这个参数,本人尝试后发现无效(Mac系统)
//Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions()
// .setArgs(Collections.singletonList("--start-maximized"))
// .setHeadless(false));
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false));
browser.newContext(new Browser.NewContextOptions()
.setIgnoreHTTPSErrors(true)
.setJavaScriptEnabled(true)
.setViewportSize(2880, 1800));
Page page = browser.newPage();
page.navigate("https://www.cnblogs.com/longronglang");
System.out.println(page.title());
browser.close();
playwright.close();

2、多个浏览器启动

就是个浏览器的封装,没啥技术含量,示例代码如下:

import com.microsoft.playwright.*;
import org.testng.annotations.Test; /**
* @author rongrong
* @version 1.0
* @description 浏览器窗口操作
* @date 2022/10/7 2:21 PM
*/
public class TestBrowser { /**
* 创建浏览器上下文
*
* @param browser
* @return
*/
public BrowserContext createContext(Browser browser) {
BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.setIgnoreHTTPSErrors(true)
.setJavaScriptEnabled(true)
//此处可以理解为设定指定窗口启动
.setViewportSize(1980, 1080));
return context;
} /**
* 创建浏览器
*
* @param name
* @param playwright
* @return
*/
public Browser createBrowser(String name, Playwright playwright) {
try {
switch (name) {
case "firefox":
return playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(false).setTimeout(120 * 1000));
case "chromium":
return playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setTimeout(120 * 1000));
case "webkit":
return playwright.webkit().launch();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
} @Test
public void testBrowser() {
//火狐浏览器
startBrowser("firefox");
//谷歌浏览器
startBrowser("chromium");
//这个浏览器不好使
//startBrowser("webkit");
} /**
* 根据浏览器类型,启动浏览器
*
* @param browserName
*/
private void startBrowser(String browserName) {
//创建Playwright
Playwright playwright = Playwright.create();
//创建Browser(使用谷歌浏览器)
Browser browser = createBrowser(browserName, playwright);
//创建浏览器上下文
BrowserContext browserContext = createContext(browser);
Page page = browserContext.newPage();
page.navigate("https://www.cnblogs.com/longronglang");
System.out.println("page.title :" + page.title());
System.out.println(browserName + " 浏览器启动了!");
browser.close();
browserContext.close();
playwright.close();
}
}

效果如下:

3、前进/后退/刷新操作

示例代码如下:

        Playwright playwright = Playwright.create();
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false));
browser.newContext(new Browser.NewContextOptions()
.setIgnoreHTTPSErrors(true)
.setJavaScriptEnabled(true)
.setViewportSize(2880, 1800));
Page page = browser.newPage();
page.navigate("https://www.cnblogs.com/longronglang");
//输出:久曲健 - 博客园
System.out.println("page title:"+page.title());
//这里是运行时打断点使用,方便调试(适用于喜欢用录制回放生成脚本的同学)
//page.pause();
pause(3);
//打开百度页面
page.navigate("https://www.baidu.com/");
//输出:百度一下,你就知道
System.out.println("page title:"+page.title());
//后退操作
page.goBack();
pause(3);
//输出:久曲健 - 博客园
System.out.println("page title:"+page.title());
//前进操作
page.goForward();
pause(3);
System.out.println("page title:"+page.title());
//刷新操作
page.reload();
pause(3);
//输出当前url
System.out.println("page url:"+page.url());
browser.close();
playwright.close();

效果如下:

到此,关于浏览器的操作部分已分享完毕,有兴趣的同学可以自行尝试,更多请参考官方文档。

写在最后

这个博客从上午九点多写到现在,表示很惭愧,大部分时间还是在刷手机,懒散坏了,想收收心,怕是真的很难!

整个人还是不太好,因为打嗝不止,震的我脖子都疼,果然病痛确实很折磨人!

看到很好的一句话分享给大家,也送给每个恋爱过程中朋友:

分享如下:

连回音都没有的山谷,不值得纵身一跃;

——知乎

微软出品自动化神器Playwright(Playwright+Java)系列(四) 之 浏览器操作的更多相关文章

  1. 微软出品自动化神器【Playwright+Java】系列(五) 之 常见点击事件操作

    写在前面 明天就是周五了,这周有那么一两天心情特别不好,真的是做什么都没兴致,所以导致整个人都很丧,什么都不想做. 本打算周一就更新这篇文章的,但由于公司一直加班,每天到家很晚,都是挤时间去学,理解后 ...

  2. 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一) 之 环境搭建及脚本录制

    一.前言 半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了. 读到这,你可能就去百度 ...

  3. appium+java (六) 手机chrome浏览器操作

    一.前言 早之前写过一段时间的appium for native app(即原生app脚本),但尴尬的是从未写过类似的文章,后期有时间我会陆续接着写,近一阶段有时间又把appium捡起来了,由于公司产 ...

  4. java selenium (四) 使用浏览器调试工具

    在基于UI元素的自动化测试中, 无论是桌面的UI自动化测试,还是Web的UI自动化测试.   首先我们需要查找和识别UI元素. 在基于Web UI 自动化测试中, 测试人员需要了解HTML, CSS和 ...

  5. Selenium3 + Python3自动化测试系列三——控制浏览器操作

    控制浏览器操作 控制浏览器窗口大小 在测试过程中,我们在打开浏览器后,根据需求可自定义调整浏览器的尺寸大小.WebDriver提供了set_window_size()方法来设置浏览器的大小. 如果页面 ...

  6. 探索微软开源Python自动化神器Playwright

    相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也 ...

  7. 推荐一款最强Python自动化神器!不用写一行代码!

    搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: selenium.结合标准的WebDriver API来编写Python自动化脚本,可以实现解放双手,让脚本代替人 ...

  8. 推荐一款最强Python自动化神器!再也不用写代码了!

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: seleniu ...

  9. .net基础学java系列(二)IDE

    上一篇文章.net基础学java系列(一)视野 废话: "视野"这篇文章,管理员说它比较空洞!也许初学者看不懂表格中的大部分内容!多年的neter估计也有很多不知道的! 有.net ...

随机推荐

  1. AtCoder Beginner Contest 248 E - K-colinear Line // 计算几何

    原题链接:E - K-colinear Line (atcoder.jp) 题意: 给出直角坐标系上N个点(N <= 300),求经过这些点中至少K个点的直线数量,若有无穷多条,则输出" ...

  2. 倍增求RMQ

    RMQ,即区间最值查询,给定一个序列,求区间l-r的最大值.最小值. st表求RMQ,预处理On*logn,查询O1. 预处理: void init_rmq() { for(rll j=1;j< ...

  3. Collection集合和Collection的常用功能

    boolean add(E e); 向集合里添加元素 boolean remove(E e); 删除集合中的某个元素 void clear(); 清空集合的所有元素 boolean contains( ...

  4. Odoo14 防暴力破解登录密码

    1 # Odoo14 防暴力破解登录密码 2 # 主要工具:redis 3 # 实现思路:限制每个用户24小时内登录失败次数.连续超过5次失败后,需要等待一定时间后才能再次尝试登录 4 # 配置:在你 ...

  5. 【原创】医鹿APP九价HPV数据抓包分析

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! 医鹿APP九价HPV数据抓包分析 操作环 ...

  6. java学习第七天xml.day18

    反射 在java中,反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力. 获取字节码的方式: 使用反射获取构造器 : 内省

  7. 048_末晨曦Vue技术_处理边界情况之使用$root访问根实例

    处理边界情况之使用$root访问根实例 点击打开视频教程 在每个 new Vue 实例的子组件中,其根实例可以通过 $root property 进行访问. 例如,在这个根实例中: src\main. ...

  8. YC-Framework版本更新:V1.0.9

    分布式微服务框架:YC-Framework版本更新V1.0.9!!! 本文主要内容: 1.V1.0.9版本更新主要内容 2.YC-Framework新的征程 一.V1.0.9版本更新主要内容 (1)接 ...

  9. 拥挤的奶牛题解---队列优化DP---DD(XYX)​​​​​​​的博客

    拥挤的奶牛 时间限制: 1 Sec  内存限制: 128 MB 题目描述 FJ的n头奶牛(1<=n<=50000)在被放养在一维的牧场.第i头奶牛站在位置x(i),并且x(i)处有一个高度 ...

  10. java方法---定义,调用

    定义,调用 1.方法的定义 方法就是一段用来完成特定功能的代码片段,类似于其它语言的函数. 方法用于定义该类或该类的实例的行为特征和功能实现.方法是类和对象行为特征的抽象. 方法很类似于面向过程中的函 ...