微软出品自动化神器【Playwright+Java】系列(十一)IFrame、Dialog、文件下载、执行JS、多窗口处理操作
写在前面
今晚下班到家,老父亲问我和相亲对象聊了吗,我又差点火上来了,但是控制住了。
我说,一周没聊了,总是我找他,她却从不找我,我真的感觉没啥意思。
老父亲长叹了一口气说道,自己努力吧,然后关上门就回卧室了。
那一刻,我突然感觉我可能真的也就这样了,不会有人喜欢,也不会结婚,只能是孤独终老了!
可能看到这,有人会说,还是那点破事,是的,好无助有木有,真的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();
}
}
写在最后
我是真的着急,有时候也埋怨过命运的不公,可是,这不能改变什么。
现在,我能做的就是让自己忙起来,保持学习、健身、每天有个好心情,就很好了。
最后,祝自己,早日脱单,能够找到自己的另一半!
优秀不够,你是否无可替代
软件测试交流QQ群:721256703,期待你的加入!!
欢迎关注我的微信公众号:软件测试君