微軟出品自動化神器Playwright(Playwright+Java)系列(四) 之 瀏覽器操作
- 2022 年 10 月 7 日
- 筆記
- Playwright+Java
寫在前面
今天是國慶節的最後一天,明天又要上班了,真的是感覺好像才開始放假一樣,還是因為失戀沒緩過來嗎?
我的國慶七天
第1天,當了近半天的司機,陪家人去各大超市去購物,下午在家躺·····
第2-5天,重感冒,鼻涕不止,渾身酸痛乏力,兩卷衛生紙下去,鼻子已經廢了,真的是躺平了······
第6天,打嗝不止,乾咳、嗓子發炎腫了、鼻子燒了、嗓子基本說不出話了······
綜上,真的這個假期過的好累,算是大病一場嗎?
該做點什麼
早上6點20醒了,刷了一集《請君》,覺得狀態還不錯,還是寫點東西吧,也算找找狀態吧。
不管經歷過什麼,孰對孰錯,生活還是要繼續的,和自己和解,要學習的還有很多,充實過好每一天即可。
Playwright之瀏覽器操作
基礎參數
這系列的文章還要繼續下去的,那麼接下來要進行瀏覽器部分的操作了。
1、創建瀏覽器對象
示例代碼如下:
//默認為無頭瀏覽器方式啟動
browser = playwright.chromium().launch();
//參數設定方式啟動
browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(true).setSlowMo(5000));
2、創建瀏覽器上下文
context = browser.newContext();
3、創建Page對象
一般來說,一個page對應一個瀏覽器選項卡,這點和selenium有點像,也可以說是比selenium分的更細緻?
示例如下:
page = context.newPage();
瀏覽操作
1、瀏覽器最大化
這裡以chrome瀏覽器為例,示例代碼如下:
Playwright playwright = Playwright.create();
//看到某博主寫的python版的加--start-maximized這個參數,本人嘗試後發現無效(Mac系統)
//Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions()
// .setArgs(Collections.singletonList("--start-maximized"))
// .setHeadless(false));
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false));
browser.newContext(new Browser.NewContextOptions()
.setIgnoreHTTPSErrors(true)
.setJavaScriptEnabled(true)
.setViewportSize(2880, 1800));
Page page = browser.newPage();
page.navigate("//www.cnblogs.com/longronglang");
System.out.println(page.title());
browser.close();
playwright.close();
2、多個瀏覽器啟動
就是個瀏覽器的封裝,沒啥技術含量,示例代碼如下:
import com.microsoft.playwright.*;
import org.testng.annotations.Test;
/**
* @author rongrong
* @version 1.0
* @description 瀏覽器窗口操作
* @date 2022/10/7 2:21 PM
*/
public class TestBrowser {
/**
* 創建瀏覽器上下文
*
* @param browser
* @return
*/
public BrowserContext createContext(Browser browser) {
BrowserContext context = browser.newContext(new Browser.NewContextOptions()
.setIgnoreHTTPSErrors(true)
.setJavaScriptEnabled(true)
//此處可以理解為設定指定窗口啟動
.setViewportSize(1980, 1080));
return context;
}
/**
* 創建瀏覽器
*
* @param name
* @param playwright
* @return
*/
public Browser createBrowser(String name, Playwright playwright) {
try {
switch (name) {
case "firefox":
return playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(false).setTimeout(120 * 1000));
case "chromium":
return playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setTimeout(120 * 1000));
case "webkit":
return playwright.webkit().launch();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Test
public void testBrowser() {
//火狐瀏覽器
startBrowser("firefox");
//谷歌瀏覽器
startBrowser("chromium");
//這個瀏覽器不好使
//startBrowser("webkit");
}
/**
* 根據瀏覽器類型,啟動瀏覽器
*
* @param browserName
*/
private void startBrowser(String browserName) {
//創建Playwright
Playwright playwright = Playwright.create();
//創建Browser(使用谷歌瀏覽器)
Browser browser = createBrowser(browserName, playwright);
//創建瀏覽器上下文
BrowserContext browserContext = createContext(browser);
Page page = browserContext.newPage();
page.navigate("//www.cnblogs.com/longronglang");
System.out.println("page.title :" + page.title());
System.out.println(browserName + " 瀏覽器啟動了!");
browser.close();
browserContext.close();
playwright.close();
}
}
效果如下:
3、前進/後退/刷新操作
示例代碼如下:
Playwright playwright = Playwright.create();
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false));
browser.newContext(new Browser.NewContextOptions()
.setIgnoreHTTPSErrors(true)
.setJavaScriptEnabled(true)
.setViewportSize(2880, 1800));
Page page = browser.newPage();
page.navigate("//www.cnblogs.com/longronglang");
//輸出:久曲健 - 博客園
System.out.println("page title:"+page.title());
//這裡是運行時打斷點使用,方便調試(適用於喜歡用錄製回放生成腳本的同學)
//page.pause();
pause(3);
//打開百度頁面
page.navigate("//www.baidu.com/");
//輸出:百度一下,你就知道
System.out.println("page title:"+page.title());
//後退操作
page.goBack();
pause(3);
//輸出:久曲健 - 博客園
System.out.println("page title:"+page.title());
//前進操作
page.goForward();
pause(3);
System.out.println("page title:"+page.title());
//刷新操作
page.reload();
pause(3);
//輸出當前url
System.out.println("page url:"+page.url());
browser.close();
playwright.close();
效果如下:
到此,關於瀏覽器的操作部分已分享完畢,有興趣的同學可以自行嘗試,更多請參考官方文檔。
寫在最後
這個博客從上午九點多寫到現在,表示很慚愧,大部分時間還是在刷手機,懶散壞了,想收收心,怕是真的很難!
整個人還是不太好,因為打嗝不止,震的我脖子都疼,果然病痛確實很折磨人!
看到很好的一句話分享給大家,也送給每個戀愛過程中朋友:
分享如下:
連迴音都沒有的山谷,不值得縱身一躍;
。——知乎