天天看點

微軟Playwright開源自動化架構初探-第一段代碼和對應含義(首頁

作者:蛋蛋雜談

昨天我們已經在windows/mac上配置好了 playwrigt架構,今天來寫代碼看看該架構怎麼運作。

在寫第一段代碼之前,補充下上次沒有講完 playwright架構的優點。跨浏覽器、跨平台、跨語言、可測試的移動網絡。适用于Android和Mobile safiri的Google Chrome 原生移動仿真。相同的渲染引擎适用于桌面和雲端。小程式目前還沒有嘗試。

第一次使用時,需要下載下傳對應各個系統的浏覽器,具體代碼如下:

微軟Playwright開源自動化架構初探-第一段代碼和對應含義(首頁

我把代碼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開源自動化架構初探-第一段代碼和對應含義(首頁
微軟Playwright開源自動化架構初探-第一段代碼和對應含義(首頁

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開源自動化架構初探-第一段代碼和對應含義(首頁
微軟Playwright開源自動化架構初探-第一段代碼和對應含義(首頁
微軟Playwright開源自動化架構初探-第一段代碼和對應含義(首頁

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開源自動化架構初探-第一段代碼和對應含義(首頁

截圖成功

今天先到這裡

繼續閱讀