天天看點

微軟自動化神器【Playwright】(十)補充API操作

作者:軟體測試君

寫在前面

今晚下班到家,老父親問我和相親對象聊了嗎,我又差點火上來了,但是控制住了。

我說,一周沒聊了,總是我找他,她卻從不找我,我真的感覺沒啥意思。

老父親長歎了一口氣說道,自己努力吧,然後關上門就回卧室了。

那一刻,我突然感覺我可能真的也就這樣了,不會有人喜歡,也不會結婚,隻能是孤獨終老了!

可能看到這,有人會說,還是那點破事,是的,好無助有木有,真的「35」歲了!

來吧,接着補充這系列的文章。

補充API

Iframe操作

定位到frame,用frame去對象操作裡面的元素。

「示例代碼如下:」

page.navigate("http://localhost:8080/iframeDemo.html");
//定位到frame元素,然後用frame對象操作
FrameLocator locator = page.frameLocator("#iframe");
//使用name屬性進入frame
Frame frame = page.frame("iframeName");
//使用Src的URL進入iframe
Frame frame = page.frameByUrl(Pattern.compile(".*iframe1.*"));
frame.locator("#user").fill("11111111111111");
           

Dialogs處理

這裡僅隻原生的對話框互動,比如alert(), confirm(), prompt() ,預設情況下,對話框由Playwright自動關閉。

「示例代碼如下:」

page.navigate("http://localhost:8080/popup.html");
page.click("#alert");
page.onDialog(dialog -> System.out.println(dialog.message()));
           

檔案下載下傳處理

Playwright會通過Page. ondown(handler)事件将被下載下傳到一個臨時檔案夾中,使用事件中的下載下傳對象擷取下載下傳url、檔案系統路徑和有效負載流, 也可以指定檔案的下載下傳位置。

「示例代碼如下:」

page.navigate("http://localhost:8080/download.html");
// 等待下載下傳開始
Download download = page.waitForDownload(() -> {
    // 執行啟動下載下傳的動作
    page.click("text=下載下傳");
});
// 等待下載下傳完成
Path path = download.path();
System.out.println(download.path());
//儲存檔案到指定位置
download.saveAs(Paths.get("demo.exe"));
           

執行JavaScript操作

在做web自動化時,有些情況特殊情況,需要通過第三方手段比如js來完成實作,比如去改變某些元素對象的屬性或者進行一些特殊的操作,同樣playwight也可以實作。

「用法」

page.evaluate(js語句)

「示例代碼如下:」

page.navigate("https://www.baidu.com/");
page.evaluate("document.getElementById('su').setAttribute('value','測試');");
           

多視窗處理

和selenium一樣,個人感覺沒selenium處理得好呢。

「示例代碼如下:」

page.navigate("https://www.baidu.com/");
page.fill("#kw","淘寶");
page.click("#su");
page.waitForSelector("[data-w] [tpl='se_com_default']:nth-of-type(4) [data-showurl-highlight]").click();
List<Page> pages = context.pages();
for (Page page: pages) {
    String url = page.url();
    if(url.contains("taobao")){
        page.fill("#q","heyday");
        break;
    }else {
        page.close();
    }
}
           

寫在最後

我是真的着急,有時候也埋怨過命運的不公,可是,這不能改變什麼。

現在,我能做的就是讓自己忙起來,保持學習、健身、每天有個好心情,就很好了。

最後,祝自己,早日脫單,能夠找到自己的另一半!

繼續閱讀