如何使用Playwright对Java API实现自动视觉测试

微软新的端到端浏览器自动化框架Playwright引起了轰动!仅在几个月前,我才试玩了Playwright,当时它是一个仅JavaScript的框架,当得知语言支持已经扩展到我心爱的Java以及Python和C#时,我感到非常惊喜。

借助额外的语言支持以及跨现代浏览器引擎Chromium,Firefox和WebKit执行的能力,这使Playwright与Selenium WebDriver处于同一类别,成为所有需要交叉测试的Web测试人员(不仅是JS)的可行测试解决方案浏览器测试功能,适用于复杂的应用程序。

我喜欢通过实际使用框架来自动化现实场景来评估框架。因此,在本文中,我将与Playwright分享构建测试项目的步骤,其中包括Page Objects,还将Playwright步骤与Selenium WebDriver中的等效步骤进行比较。

如何安装Playwright Java

Playwright入门的第一步是将依赖项添加到您的项目中。您可以从Maven存储库中获得Playwright客户端。我创建了一个新的pom.xml文件,并添加了playwright依赖项。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>angie.jones</groupId>
    <artifactId>playwright-java</artifactId>
    <version>1.0-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>com.microsoft.playwright</groupId>
           <artifactId>playwright</artifactId>
           <version>0.180.0</version>
       </dependency>
   </dependencies>
</project>

像Selenium WebDriver一样,Playwright是一种浏览器自动化工具,不一定限于测试框架。实际上,它们都不提供任何断言方法。因此,您还需要添加一个断言库。对于此示例,我将使用TestNG。

  <dependencies>
       <dependency>
           <groupId>com.microsoft.playwright</groupId>
           <artifactId>playwright</artifactId>
           <version>0.180.0</version>
       </dependency>

       <dependency>
           <groupId>org.testng</groupId>
           <artifactId>testng</artifactId>
           <version>7.3.0</version>
           <scope>test</scope>
       </dependency>
   </dependencies>

如何在Playwright中启动浏览器

Playwright 允许您创建特定类型的浏览器对象。选项包括Chromium(基于Chrome和Edge),Firefox和WebKit(基于Safari引擎)。使用此Browser 对象,可以使用launch()方法启动浏览器实例。

package base;

import com.microsoft.playwright.*;
import org.testng.annotations.BeforeClass;

public class BaseTests {

    private Browser browser;

    @BeforeClass
    public void setUp(){
        browser = Playwright
                .create()
                .chromium()
                .launch();
    }
}

默认情况下,Playwright以无头模式启动浏览器,这意味着您实际上不会看到测试执行。如果您希望浏览器打开,则可以通过传入LaunchOption禁用无头模式:

.launch(new BrowserType.LaunchOptions().withHeadless(false));

除了设置无头模式外,LaunchOptions还提供了其他几种方法,包括设置环境变量和打开Chromium开发工具的方法。

如何在Playwright中启动网站

现在我们有了浏览器,可以加载测试中的应用程序– Automation Bookstore。为此,我们需要一个Page对象–与Selenium中的WebDriver对象相似。要创建Page对象,请在第8行上调用browser.newPage()。它表示浏览器窗口中的单个选项卡。有了这个对象,我们就可以导航到我们的URL(第9行)。

  @BeforeClass
    public void setUp(){
        browser = Playwright
                .create()
                .chromium()
                .launch(new BrowserType.LaunchOptions().withHeadless(false));

        Page page = browser.newPage();
        page.navigate("https://automationbookstore.dev/");
    }

如何在Playwright中创建页面对象

我们已经在浏览器中加载了应用程序,现在我们想使用Page Object Model设计模式来创建一个Java类,该Java类代表应用程序的Search页面。

为了与Web元素进行交互,Page Object类将需要访问我们在上面创建的Playwright Page对象。同样,这与我们将Selenium WebDriver对象传递给Page Object类以便它们可以执行浏览器交互方法的方式类似。

Page page = browser.newPage();
        page.navigate("https://automationbookstore.dev/");
        SearchPage searchPage = new SearchPage(page);
package pages;

import com.microsoft.playwright.Page;

public class SearchPage {

    private Page page;
  
    public SearchPage(Page page){
        this.page = page;
    }
}

我要添加到此类的第一个方法是search(),它将接收文本并将其输入到文本字段中。这样做的方法是fill(),它使用一个定位符和您想要输入的文本到字段中。您可以在第11行看到调用。

public class SearchPage {

    private Page page;
    private String locator_searchBar = "#searchBar";

    public SearchPage(Page page){
        this.page = page;
    }

    public void search(String query) {
        page.fill(locator_searchBar, query);
    }
}

以上就是如何使用Playwright对Java API实现自动视觉测试的详细内容,更多关于Playwright对Java API实现自动视觉测试的资料请关注我们其它相关文章!

(0)

相关推荐

  • Java接口自动化测试框架设计之Get请求方法和测试详解

    我来介绍通过代码逐步实现接口自动化测试框架的设计过程.先不要着急,框架设计我们只是介绍基本的组件,而且框架设计没有想象那么难,一步一步跟着做就会了.这篇我们来演示,如果通过Java代码来实现一个用纯代码实现Http中的Get请求过程. 1.Get请求API举例 浏览器打开网址https://reqres.in,然后下拉一屏,我们就可以看到这个网站的API举例,我们来看看显示用户的get接口. 通过这个图,我们能够获取这些信息 1)网站host地址:https://reqres.in/ 2)用户展

  • Java进行Appium自动化测试的实现

    本文介绍如何在eclipse中使用Java进行Appium自动化测试 前提条件 1.配置好了java环境 2.安装了eclipse 3.安装了Maven 4.安装了Android模拟器.我用的夜神模拟器,下载地址:https://www.yeshen.com/ 5.能够正常连接Android模拟器 (1)模拟器进入开发者模式 在模拟器中,点击 设置->关于平板电脑->版本号(多次点击) (2)检查adb版本 cmd中输入 adb version查看Android SDK的adb版本 进入夜神模

  • android monkey自动化测试改为java调用monkeyrunner Api

    众所周知,一般情况下我们使用android中的monkeyrunner进行自动化测试时,使用的是python语言来写测试脚本.不过,最近发现可以用java调用monkeyrunner Api,用java语言写测试脚本. 于是,就简单研究了一下.这里做一些总结.希望有对在研究的午饭可以有所用处. 开始时,搜素到一些零碎的教程,说使用java调用monkeyrunner时,需要导入android sdk  tools路径下的lib里面的4个包:ddmlib.jar,guavalib.jar,monk

  • 微软开源最强Python自动化神器Playwright(不用写一行代码)

    相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也需要一定的学习成本,对于一个纯小白来讲还是有些门槛的. 最近,微软开源了一个项目叫「playwright-python」,简直碉堡了!这个项目是针对Python语言的纯自动化工具,连代码都不用写,就能实现自动化功能. 可能你会觉得有点不可思议,但它就是这么厉害.下面我们一起看下这个神器. 1. Pl

  • java接口自动化测试框架及断言详解

    我们介绍了Get方法的设计过程和测试结果,现在我们需要对前面代码进行重构和修改,本篇需要完成以下目标. 1)重构Get方法 2)如何进行JSON解析 3)使用TestNG方法进行测试断言 1.重构Get方法 在前面文章,说过,之前写的Get方法比较繁琐,不光写了如何进行Get请求,还写了获取http响应状态码和JSON转换.现在我们需要抽取出来,设计Get请求方法,就只干一件事情,那就是如何发送get请求,其他的不要管. 我们知道,请求之后会返回一个HTTP的响应对象,所以,我们把get方法的返

  • Java自动化测试中多数据源的切换(实例讲解)

    在做自动化测试时,数据驱动是一个很重要的概念,当数据与脚本分离后,面对茫茫多的数据,管理数据又成了一个大问题,而数据源又可能面对多个,就跟在开发过程中,有时候要连接MYSQL,有时候又要连接SQL SERVER一样,如何做到快速切换?下面的示例中,我们将从一个数据源开始,一步步的演示下去: 一. 用外部文件做数据驱动的基本写法 1.1 我们在做数据驱动时,把数据存储在JAVA的属性文件中:data.properties username=test password=123456 1.2 解析pr

  • 如何使用Playwright对Java API实现自动视觉测试

    微软新的端到端浏览器自动化框架Playwright引起了轰动!仅在几个月前,我才试玩了Playwright,当时它是一个仅JavaScript的框架,当得知语言支持已经扩展到我心爱的Java以及Python和C#时,我感到非常惊喜. 借助额外的语言支持以及跨现代浏览器引擎Chromium,Firefox和WebKit执行的能力,这使Playwright与Selenium WebDriver处于同一类别,成为所有需要交叉测试的Web测试人员(不仅是JS)的可行测试解决方案浏览器测试功能,适用于复杂

  • 一小时迅速入门Mybatis之bind与多数据源支持 Java API

    目录 一.bind 二. 多数据库支持 2.1 pom.xml 2.2 mybatis-config.xml 2.3 接口 PersonMapper 2.4 xml PersonMapper.xml 2.5 测试 这次说一下bind.多数据源支持.Java API 一.bind // 测试bind List<Person> testBind(@Param("name") String name); <!--测试bind--> <!--相当于SQL sele

  • ZooKeeper Java API编程实例分析

    本实例我们用的是java3.4.6版本,实例方便大家学习完后有不明白的可以在留言区讨论. 开发应用程序的ZooKeeper Java绑定主要由两个Java包组成: org.apache.zookeeper org.apache.zookeeper.data org.apache.zookeeper包由ZooKeeper监视的接口定义和ZooKeeper的各种回调处理程序组成. 它定义了ZooKeeper客户端类库的主要类以及许多ZooKeeper事件类型和状态的静态定义. org.apache.

  • java web实现自动登录

    本文实例为大家分享了java web实现自动登录的具体代码,供大家参考,具体内容如下 实现思路 1.在登录的 api 或 servlet中验证用户名密码 2.如果验证成功,则把该用户信息存在 服务器 的 session 缓存中,并把 可以表示该用户的 信息存在 cookie中返回.例如: //存储 session request.getSession().setAttribute("userBean", queryUser); Cookie cookie = new Cookie(&q

  • 解决Java API不能远程访问HBase的问题

    目录 Java API不能远程访问HBase 配置Linux的hostname 配置Linux的hosts 配置访问windows的hosts 最后附上Java代码示例 Java API连接HBase问题 Java API不能远程访问HBase 今天我在虚拟机里面安装了Hbase 1.2.4,说在windows上Java API调用访问下玩玩,结果始终连接不上. 现象是启动程序后,程序出现卡死的状态,没报错也不停止,大约半分钟后才打印一堆日志出来,说连接重试了多次也连接不上,截图如下: 这个问题

  • 通过java api实现解压缩zip示例

    通过java api实现zip压缩格式的压缩与解压缩 复制代码 代码如下: package com.hongyuan.test; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Enu

  • java web实现自动登录功能

    本文实例为大家分享了java web实现自动登录功能的具体代码,供大家参考,具体内容如下 主要思路就是:当用户访问网站的首页时,浏览器端会先检擦浏览器中存在的cookie中是否又登录的用户的用户名,如果有,则直接跳转至用户登录好的界面,如果没有,则重定向至登录界面,在服务器端创建该用户登录的cookie,响应时,将创建的cookie返回至浏览器端保存. 一.用户访问首页时检查cookie是否存在. package ahpudong.com; import java.io.IOException;

  • Java API学习教程之正则表达式详解

    前言 正则表达式是什么应该不用过多介绍,每位程序员应该都知道,正则表达式描述的是一种规则,符合这种限定规则的字符串我们认为它某种满足条件的,是我们所需的.在正则表达式中,主要有两种字符,一种描述的是普通的字符,另一种描述的是元字符.其中元字符是整个正则表达式的核心,并由它完成规则的制定工作. 本篇文章主要从Java这门程序设计语言的角度理解正则表达式的应用,主要涉及以下内容: •基本正则表达式的理论基础 •Java中用于正则表达式匹配的类 •几种常用的正则表达式使用实例 一.正则表达式的理论基础

  • hbase访问方式之java api

    Hbase的访问方式 1.Native Java API:最常规和高效的访问方式: 2.HBase Shell:HBase的命令行工具,最简单的接口,适合HBase管理使用: 3.Thrift Gateway:利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据: 4.REST Gateway:支持REST 风格的Http API访问HBase, 解除了语言限制: 5.MapReduce:直接使用MapReduce作业处理Hbase数据

  • 5个Java API使用技巧

    本文介绍了一些关于Java API安全和性能方面的简单易用的技巧,其中包括保证API Key安全和开发Web Service方面中在框架方面选择的一些建议. 程序员都喜欢使用API!例如为app应用构建API或作为微服务架构体系的一部分.当然,使用API的前提是能让你的工作变得更轻松.为了简化开发和提高工作效率所作出的努力,有时也意味着需要寻找新的类库或者过程(或者减少过程).对于很多开发团队来说,对于其APP和API进行管理认证和访问控制要耗费很多的时间,因此我们需想分享一些技巧,它们能节约你

随机推荐