寫在前面
今天是國慶節的最後一天,明天又要上班了,真的是感覺好像才開始放假一樣,還是因為「失戀」沒緩過來嗎?
我的國慶七天
第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("https://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("https://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("https://www.cnblogs.com/longronglang");
//輸出:久曲健 - 部落格園
System.out.println("page title:"+page.title());
//這裡是運作時打斷點使用,友善調試(适用于喜歡用錄制回放生成腳本的同學)
//page.pause();
pause(3);
//打開百度頁面
page.navigate("https://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();
效果如下:
到此,關于浏覽器的操作部分已分享完畢,有興趣的同學可以自行嘗試,更多請參考官方文檔。
寫在最後
這個部落格從上午九點多寫到現在,表示很慚愧,大部分時間還是在刷手機,懶散壞了,想收收心,怕是真的很難!
整個人還是不太好,因為打嗝不止,震的我脖子都疼,果然病痛确實很折磨人!
看到很好的一句話分享給大家,也送給每個戀愛過程中朋友:
分享如下:
連回音都沒有的山谷,不值得縱身一躍; 。「——知乎」