IT评测·应用市场-qidao123.com

标题: 微软出品自动化神器【Playwright+Java】系列(十一)IFrame、Dialog、文件 [打印本页]

作者: 乌市泽哥    时间: 2023-3-3 11:34
标题: 微软出品自动化神器【Playwright+Java】系列(十一)IFrame、Dialog、文件
写在前面

今晚下班到家,老父亲问我和相亲对象聊了吗,我又差点火上来了,但是控制住了。
我说,一周没聊了,总是我找他,她却从不找我,我真的感觉没啥意思。
老父亲长叹了一口气说道,自己努力吧,然后关上门就回卧室了。
那一刻,我突然感觉我可能真的也就这样了,不会有人喜欢,也不会结婚,只能是孤独终老了!
可能看到这,有人会说,还是那点破事,是的,好无助有木有,真的35岁了!
来吧,接着补充这系列的文章。
补充API

Iframe操作

定位到frame,用frame去对象操作里面的元素。
示例代码如下:
  1. page.navigate("http://localhost:8080/iframeDemo.html");
  2. //定位到frame元素,然后用frame对象操作
  3. FrameLocator locator = page.frameLocator("#iframe");
  4. //使用name属性进入frame
  5. Frame frame = page.frame("iframeName");
  6. //使用Src的URL进入iframe
  7. Frame frame = page.frameByUrl(Pattern.compile(".*iframe1.*"));
  8. frame.locator("#user").fill("11111111111111");
复制代码
Dialogs处理

这里仅只原生的对话框交互,比如alert(), confirm(), prompt() ,默认情况下,对话框由Playwright自动关闭。
示例代码如下:
  1. page.navigate("http://localhost:8080/popup.html");
  2. page.click("#alert");
  3. page.onDialog(dialog -> System.out.println(dialog.message()));
复制代码
文件下载处理

Playwright会通过Page. ondown(handler)事件将被下载到一个临时文件夹中,使用事件中的下载对象获取下载url、文件系统路径和有效负载流, 也可以指定文件的下载位置。
示例代码如下:
  1. page.navigate("http://localhost:8080/download.html");
  2. // 等待下载开始
  3. Download download = page.waitForDownload(() -> {
  4.     // 执行启动下载的动作
  5.     page.click("text=下载");
  6. });
  7. // 等待下载完成
  8. Path path = download.path();
  9. System.out.println(download.path());
  10. //保存文件到指定位置
  11. download.saveAs(Paths.get("demo.exe"));
复制代码
执行JavaScript操作

在做web自动化时,有些情况特殊情况,需要通过第三方手段比如js来完成实现,比如去改变某些元素对象的属性或者进行一些特殊的操作,同样playwight也可以实现。
用法
page.evaluate(js语句)
示例代码如下:
  1. page.navigate("https://www.baidu.com/");
  2. page.evaluate("document.getElementById('su').setAttribute('value','测试');");
复制代码
多窗口处理

和selenium一样,个人感觉没selenium处理得好呢。
示例代码如下:
  1. page.navigate("https://www.baidu.com/");
  2. page.fill("#kw","淘宝");
  3. page.click("#su");
  4. page.waitForSelector("[data-w] [tpl='se_com_default']:nth-of-type(4) [data-showurl-highlight]").click();
  5. List<Page> pages = context.pages();
  6. for (Page page: pages) {
  7.     String url = page.url();
  8.     if(url.contains("taobao")){
  9.         page.fill("#q","heyday");
  10.         break;
  11.     }else {
  12.         page.close();
  13.     }
  14. }
复制代码
写在最后

我是真的着急,有时候也埋怨过命运的不公,可是,这不能改变什么。
现在,我能做的就是让自己忙起来,保持学习、健身、每天有个好心情,就很好了。
最后,祝自己,早日脱单,能够找到自己的另一半!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4