昨天我們已經在windows/mac上配置好了 playwrigt架構,今天來寫代碼看看該架構怎麼運作。
在寫第一段代碼之前,補充下上次沒有講完 playwright架構的優點。跨浏覽器、跨平台、跨語言、可測試的移動網絡。适用于Android和Mobile safiri的Google Chrome 原生移動仿真。相同的渲染引擎适用于桌面和雲端。小程式目前還沒有嘗試。
第一次使用時,需要下載下傳對應各個系統的浏覽器,具體代碼如下:
我把代碼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()方法
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浏覽器的二進制檔案
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")));
}
}
截圖成功
今天先到這裡