首页 > 其他分享 >微软Playwright开源自动化框架初探-第一段代码和对应含义(首页截图)

微软Playwright开源自动化框架初探-第一段代码和对应含义(首页截图)

时间:2023-05-28 20:31:54浏览次数:33  
标签:截图 playwright 浏览器 com 开源 Playwright chromium page

昨天我们已经在windows/mac上配置好了 playwrigt框架,今天来写代码看看该框架怎么运行。

  在写第一段代码之前,补充下上次没有讲完 playwright框架的优点。跨浏览器、跨平台、跨语言、可测试的移动网络。适用于Android和Mobile safiri的Google Chrome 原生移动仿真。相同的渲染引擎适用于桌面和云端。小程序目前还没有尝试。

  第一次使用时,需要下载对应各个系统的浏览器,具体代码如下:

微软Playwright开源自动化框架初探-第一段代码和对应含义(首页截图)_sed

我把代码copy出来,一行一行地分析下:

public class PlaywrightInstall {
   public static void main(String[] args) throws InterruptedException {
       try (Playwright playwright = Playwright.create()) {
           BrowserType chromium = playwright.chromium();           // Can be "msedge", "chrome-beta", "msedge-beta", "msedge-dev", etc.           Browser browser = chromium.launch(new BrowserType.LaunchOptions().setHeadless(false).setChannel("chrome"));           Page page = browser.newPage();           page.navigate("https://www.baidu.com");           Thread.sleep(5000);//            page.navigate("https://lpt.liepin.com");//            Thread.sleep(3000);       } catch (InterruptedException e) {
           e.printStackTrace();       }


==========================================

Playwright playwright = Playwright.create()

调用Playwright包中create()方法,返回了PlaywrightImpl类中的create()方法

微软Playwright开源自动化框架初探-第一段代码和对应含义(首页截图)_自动化测试_02

微软Playwright开源自动化框架初探-第一段代码和对应含义(首页截图)_chrome_03

PlaywrightImpl类中包含多种浏览器和api

BrowserType chromium = playwright.chromium();

指定谷歌浏览器作为测试浏览器

Browser browser = chromium.launch(new BrowserType.LaunchOptions().setHeadless(false).setChannel("chrome"));

设置浏览器的样式,无头模式

Page page = browser.newPage();

定义浏览器的页面

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

浏览器地址为: https://www.baidu.com

Thread.sleep(5000);

进程沉睡5秒,页面因为网络等原因,一般都会有loading时间

加上这段代码后,就需要加上catch来捕捉异常


下面我们来运行下这段代码,看看什么效果

运行后会下载chromium浏览器的二进制文件

微软Playwright开源自动化框架初探-第一段代码和对应含义(首页截图)_测试开发_04

微软Playwright开源自动化框架初探-第一段代码和对应含义(首页截图)_chrome_05

微软Playwright开源自动化框架初探-第一段代码和对应含义(首页截图)_microsoft_06

Build日志如下:

Executing pre-compile tasks...

Running 'before' tasks

Checking sources

Copying resources... [playwrightDemo]

Parsing java… [playwrightDemo]

Writing classes… [playwrightDemo]

Checking dependencies… [playwrightDemo]

Dependency analysis found 0 affected files

Updating dependency information… [playwrightDemo]

Adding nullability assertions… [playwrightDemo]

Adding threading assertions… [playwrightDemo]

Adding pattern assertions… [playwrightDemo]

Running 'after' tasks

javac 8 was used to compile java sources

Finished, saving caches…

Executing post-compile tasks...

Finished, saving caches…

Synchronizing output directories...

2023/5/27 10:38 - Build completed successfully in 2 sec, 957 ms

浏览器会被调用 百度网页展示

=====================================

如果我想先后打开两个浏览器,应该怎么写代码呢?

package org.example;import com.microsoft.playwright.Browser;import com.microsoft.playwright.BrowserType;import com.microsoft.playwright.Page;import com.microsoft.playwright.Playwright;public class PlaywrightInstall {
   public static void main(String[] args) throws InterruptedException {
       try (Playwright playwright = Playwright.create()) {
               BrowserType chromium = playwright.chromium();           // Can be "msedge", "chrome-beta", "msedge-beta", "msedge-dev", etc.           Browser browser = chromium.launch(new BrowserType.LaunchOptions().setHeadless(false).setChannel("chrome"));           Page page = browser.newPage();           page.navigate("https://www.baidu.com");           Thread.sleep(5000);//            page.navigate("https://lpt.liepin.com");//            Thread.sleep(3000);       } catch (InterruptedException e) {
           e.printStackTrace();       }

       //Thread.sleep(3000);       PlaywrightInstall playwrightInstall = new PlaywrightInstall();       playwrightInstall.PlaywrightBrower();   }

   public void PlaywrightBrower() {
       try {
           Playwright playwright = Playwright.create();           BrowserType browserType = playwright.chromium();           Browser browser = browserType.launch(new BrowserType.LaunchOptions().setHeadless(false).setChannel("chrome"));           Page page = browser.newPage();           page.navigate("https://www.163.com");           Thread.sleep(1000);           System.out.println(page.title());       } catch (InterruptedException e){
           e.printStackTrace();       }
   }
}

这样就可以调用两个浏览器了

===========================================

最后我们尝试下当打开浏览器后,在首页截图这种情况

public void playwrightImage(){
   try (Playwright playwright = Playwright.create()) {
       BrowserType browserType = playwright.chromium();       Browser browser = browserType.launch(new BrowserType.LaunchOptions().setHeadless(false));       Page page = browser.newPage();       page.navigate("https://www.baidu.com");       page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("PlaywrightInstall.png")));   }
}

微软Playwright开源自动化框架初探-第一段代码和对应含义(首页截图)_自动化测试_07

截图成功

今天先到这里

标签:截图,playwright,浏览器,com,开源,Playwright,chromium,page
From: https://blog.51cto.com/u_11894/6366366

相关文章

  • [转]一篇文章教你学会使用三维重建知名开源系统
    如何把一组图像转换为3D模型,这可能是三维重建初学者们最常遇到的问题。这个过程融合了计算机视觉、计算机图形学、图像处理等多门学科的知识,是一套非常复杂的工程系统,许多同学想要学习却苦于没有资料参考,导致入门难度大大提高。为了帮助想要学习三维重建的同学快速上手实践,本......
  • 开源AI聊天机器人MLC LLM发布 可用于多个平台
    导读目前大多数AI聊天机器人都需要连接到云端进行处理,即使可以本地运行的也配置要求极高。那么是否有轻量化的、无需联网的聊天机器人呢?一个名为MLCLLM的全新开源项目已在GitHub上线,完全本地运行无需联网,甚至集显老电脑、苹果iPhone手机都能运行。MLCLLM项目......
  • 千乎万唤始出来,支持gpt3和gpt4支持画图,的在线gpt应用接入案例开源上线啦
    了解OPENAI平台用户一直在说,这个接口要怎么对接,如何在体验。由于我一直忙于接口中台开发,所以在线基于OPENAI接口实例例子就一直没有写。现在终于写完了。基于纯HTML+CSS+JS小白也能轻松上手部署。代码简单清晰。这里不多做其他赘述,更多关于平台信息如下小白畅玩免费支持Ch......
  • 「复刻」版DragGAN开源
    DragGAN非官方实现来了!完美复刻拖拽秒P图功能,可以直接上手尝试。还记得前几天发布的DragGAN吗?没错,就是那个「轻轻点两下」1秒修图的工具。拍的照片表情不好?修!脸型不够瘦?修!脸冲镜头的角度不对?修!搞不好,「让大象转个身」这个远古PS段子,可能就要成真......
  • 千乎万唤始出来,支持gpt3和gpt4支持画图,的在线gpt应用接入案例开源上线啦
    了解OPENAI平台用户一直在说,这个接口要怎么对接,如何在体验。由于我一直忙于接口中台开发,所以在线基于OPENAI接口实例例子就一直没有写。现在终于写完了。基于纯HTML+CSS+JS小白也能轻松上手部署。代码简单清晰。这里不多做其他赘述,更多关于平台信息如下小白畅玩免费支持C......
  • 开源可观测性平台Signoz【日志采集篇】
    转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。原创不易,请文明转载,谢谢。在开源可观测性平台Signoz系列【开篇】中,介绍了signoz的基础理论知识、安装部署及一些初始化配置。本文则记录signoz怎么采集日志,包括docker容器日志和主机日志1.收集容器日志1.1收......
  • 基于Expression Lambda表达式树的通用复杂动态查询构建器——《原型篇一》[已开源]
    续接上编,本篇来讲讲俄罗斯套娃的设计与实现。首先简单地完善一下前面提到的例子,代码如下:测试实体类//测试实体类publicclassTable{publicintA;publicintB;}独立条件类//独立条件:publicclassField{publicLogicalLogical{get;set;} ......
  • 《安富莱嵌入式周报》第313期:搬运机器人,微软出的C语言手册,开源生物信号采集板,开源SMD
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 更新一期视频教程:DSP视频教程第12期:TI开源分享IQmathDSP源码,适用于所有Cortex-M内核,本期教程做个手把手移植(2022-05-22)https://www.armbbs.cn/forum.php?mod=viewthread&......
  • 牧云 • 主机管理助手|正式开放应用市场,梦幻联动雷池WAF等多款开源软件
     0x00 前言上个月,我司长亭开源了雷池WAF,不到三天就吸引了超过上千个师傅使用,几个交流群里,师傅们讨论的热火朝天,其中两个话题引起了我们牧云 • 主机管理助手 ( Collie ) 团队的关注:没有新主机安装雷池安装配置麻烦,希望有一键安装的脚本 别着急, Collie 会出手:......
  • 开源工作流WorflowCore学习之工作流简单审核
    在开源趋势下,很多开源的组件在国内,乃至全网都少有案例。为了做这个工作流翻了许多帖子和github的帖子在这里对github ZL.WorflowCoreDemo,和PizzaRestaurantWorkflow-main表示感谢,同时也感谢给博客园的帖子。本案例再利用ZL.WorflowCoreDemo中的项目直接进行新加的。关于如何......