微软出品自动化神器【Playwright+Java】系列(十一)IFrame、Dialog、文件 ...

打印 上一主题 下一主题

主题 1035|帖子 1035|积分 3105

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
写在前面

今晚下班到家,老父亲问我和相亲对象聊了吗,我又差点火上来了,但是控制住了。
我说,一周没聊了,总是我找他,她却从不找我,我真的感觉没啥意思。
老父亲长叹了一口气说道,自己努力吧,然后关上门就回卧室了。
那一刻,我突然感觉我可能真的也就这样了,不会有人喜欢,也不会结婚,只能是孤独终老了!
可能看到这,有人会说,还是那点破事,是的,好无助有木有,真的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. }
复制代码
写在最后

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

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

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

乌市泽哥

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表