写在前面

今晚下班到家,老父亲问我和相亲对象聊了吗,我又差点火上来了,但是控制住了。

我说,一周没聊了,总是我找他,她却从不找我,我真的感觉没啥意思。

老父亲长叹了一口气说道,自己努力吧,然后关上门就回卧室了。

那一刻,我突然感觉我可能真的也就这样了,不会有人喜欢,也不会结婚,只能是孤独终老了!

可能看到这,有人会说,还是那点破事,是的,好无助有木有,真的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();
    }
}

写在最后

我是真的着急,有时候也埋怨过命运的不公,可是,这不能改变什么。

现在,我能做的就是让自己忙起来,保持学习、健身、每天有个好心情,就很好了。

最后,祝自己,早日脱单,能够找到自己的另一半!