微软出品自动化神器Playwright(Playwright+Java)系列(四) 之 浏览器操作

写在前面

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

我的国庆七天

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

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

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

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

该做点什么

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

微软出品自动化神器Playwright(Playwright+Java)系列(四)  之  浏览器操作

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

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();     } }  

效果如下:
微软出品自动化神器Playwright(Playwright+Java)系列(四)  之  浏览器操作

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)系列(四)  之  浏览器操作

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

写在最后

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

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

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

分享如下:

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

发表评论

相关文章