欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-11-17 13:06:11
微软新的端到端浏览器自动化框架playwright引起了轰动!仅在几个月前,我才试玩了playwright,当时它是一个仅javascript的框架,当得知语言支持已经扩展到我心爱的java以及pyt...

微软新的端到端浏览器自动化框架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实现自动视觉测试的资料请关注其它相关文章!