天天看點

微軟自動化神器【Playwright】(四)之 浏覽器操作

作者:軟體測試君

寫在前面

今天是國慶節的最後一天,明天又要上班了,真的是感覺好像才開始放假一樣,還是因為「失戀」沒緩過來嗎?

我的國慶七天

第1天,當了近半天的司機,陪家人去各大超市去購物,下午在家躺·····

第2-5天,重感冒,鼻涕不止,渾身酸痛乏力,兩卷衛生紙下去,鼻子已經廢了,真的是躺平了······

第6天,打嗝不止,幹咳、嗓子發炎腫了、鼻子燒了、嗓子基本說不出話了······

綜上,真的這個假期過的好累,算是大病一場嗎?

該做點什麼

早上6點20醒了,刷了一集《請君》,覺得狀态還不錯,還是寫點東西吧,也算找找狀态吧。

微軟自動化神器【Playwright】(四)之 浏覽器操作

不管經曆過什麼,孰對孰錯,生活還是要繼續的,和自己和解,要學習的還有很多,充實過好每一天即可。

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();
    }
}

           

效果如下:

微軟自動化神器【Playwright】(四)之 浏覽器操作

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();
           

效果如下:

微軟自動化神器【Playwright】(四)之 浏覽器操作

到此,關于浏覽器的操作部分已分享完畢,有興趣的同學可以自行嘗試,更多請參考官方文檔。

寫在最後

這個部落格從上午九點多寫到現在,表示很慚愧,大部分時間還是在刷手機,懶散壞了,想收收心,怕是真的很難!

整個人還是不太好,因為打嗝不止,震的我脖子都疼,果然病痛确實很折磨人!

看到很好的一句話分享給大家,也送給每個戀愛過程中朋友:

分享如下:

連回音都沒有的山谷,不值得縱身一躍; 。「——知乎」

繼續閱讀