playwright java maven项目创建

今天,我们正式开始学习 playwright吧~

我们先来创建maven项目。

一、idea新建项目

二、添加pom 依赖

java 复制代码
<?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>org.huhuan</groupId>
    <artifactId>webui</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.microsoft.playwright</groupId>
            <artifactId>playwright</artifactId>
            <version>1.60.0</version>
        </dependency>

        <!-- 替换成这个,支持 JDK8 -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.3.0</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.5</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.5</version>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.13</version>
        </dependency>

        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20200518</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.83</version>
        </dependency>

        <!-- 修复 Log4j2 错误 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.20.0</version>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <version>2.2.0</version>
        </dependency>


    </dependencies>

</project>

更新maven 库

三、创建测试类

bash 复制代码
TestPlayWright
java 复制代码
import com.microsoft.playwright.*;
import com.microsoft.playwright.options.AriaRole;
import com.microsoft.playwright.options.ServiceWorkerPolicy;

import java.util.ArrayList;
import java.util.List;

public class TestPlayWright {
    public Playwright playwright;
    public Browser browser;
    public BrowserContext context;
    public Page page;
    public int slowMo = 200;
    public boolean headless = false;
    public String bowserName = "CHROMIUM";

    public Page getPage() {
        return page;
    }

    public void init(){
        List<String> argslist = new ArrayList<String>();
        argslist.add("--window-position=" + -8 + "," + 0);
        playwright = Playwright.create();
        switch (bowserName) {
            case "CHROMIUM":
                browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setArgs(argslist)
                        .setHeadless(headless)
                        .setSlowMo(slowMo));
                break;
            case "FIREFOX":
                browser = playwright.firefox().launch(new BrowserType.LaunchOptions()
                        .setHeadless(headless).setArgs(argslist)
                        .setSlowMo(slowMo));
                break;
            case "WEBKIT":
                browser = playwright.webkit().launch(new BrowserType.LaunchOptions()
                        .setHeadless(headless).setArgs(argslist)
                        .setSlowMo(slowMo));
                break;
        }
        assert browser != null;
        Browser.NewContextOptions contextOpts = new Browser.NewContextOptions()
                .setServiceWorkers(ServiceWorkerPolicy.BLOCK);  // 屏蔽所有 Service Worker
        context = browser.newContext(contextOpts);
        page = context.newPage();
    }
    public void browserClose(){
        if(browser!=null){
            browser.close();
        }
    }
    public void playwrightClose() {
        if(playwright!=null){
            playwright.close();
        }
    }

    public static void main(String[] args)  {
        TestPlayWright test = new TestPlayWright();
        //初始化创建page对象
        test.init();
        Page page1 = test.getPage();
        //打开浏览器
        page1.navigate("https://www.baidu.com");
        page1.waitForTimeout(100000);

        //定位到搜索框
        page1.locator("//*[@id=\"kw\"]").fill("aaa");
        page1.waitForTimeout(100000);
        //通过显式和隐式可访问性属性进行定位。
        page1.getByRole(AriaRole.BUTTON,new Page.GetByRoleOptions().setName("百度一下")).click();
        page1.waitForTimeout(5000);
        //关闭浏览器
        test.browserClose();
        //关闭playwright
        test.playwrightClose();
    }
}

运行查看效果

运行效果

更多内容关注 公众号哈。

相关推荐
卷无止境1 小时前
可靠性工程统计:让失效变得"可预测"
后端
卷无止境1 小时前
C# 中的 Event:让对象学会"开口说话"
后端
2501_928996221 小时前
数据安全与灾备技术
后端·数据安全
磊 子1 小时前
硬中断 软中断
后端·操作系统
妖孽白YoonA2 小时前
xlt-token v1.0.0 正式发布:NestJS / Express 一包接入的 Token 鉴权库
后端·node.js·nestjs
MariaH2 小时前
Stream读写操作
后端
Oo_行者_oO2 小时前
Spring Authorization Server 下 Token 刷新流程自定义实现
后端·面试
alwaysrun2 小时前
C++之灵活易用的YAML解析库yaml-cpp
c++·后端·程序员
pe7er2 小时前
AI为啥会写出if(obj != null && obj.ifEnabled)这样的代码
前端·后端·架构