如何使用 webdriverIO js 和 mocha 处理 iframe 内容
Posted
技术标签:
【中文标题】如何使用 webdriverIO js 和 mocha 处理 iframe 内容【英文标题】:How to handle Iframe content using webdriverIO js and mocha 【发布时间】:2021-04-28 01:56:35 【问题描述】:我希望能够单击“同意”按钮以同意网站上的 cookie,我知道如何在 selenium webdriver 中执行此操作,但是,我不知道如何使用 js 和 mocha 执行此操作我正在努力学习任何帮助。
我试过了
browser.switchToFrame($('#sp_message_iframe_207015'));
$(getHighlightedText('Agree')).click();
但没用
基本上,我启动该网站并弹出一个询问同意 cookie 和管理 cookie/首选项的弹出窗口,我只想能够点击同意
#sp_message_iframe_207015
是 iframe 的 ID
同意元素看起来像这样
<button
tabindex="0"
title="Agree"
aria-label="Agree"
class="message-component message-button no-children"
path="[0,4,1]"
style="padding: 10px 50px; margin: 10px; border-width: 1px; border-color: rgb(0, 115, 197); border-radius: 20px; border-style: solid; font-size: 14px; font-weight: 600; color: rgb(255, 255, 255); font-family: "trebuchet ms", helvetica, sans-serif; width: auto; background: rgb(0, 115, 197);"
>
Agree
</button>
【问题讨论】:
不确定您的代码中的getHighlightedText
是什么。如果没有您拥有的 WebdriverIO 版本和您使用的网站等详细信息,这有点难以猜测。
【参考方案1】:
谢谢大家
我已经设法让它与以下内容一起工作
let frame= browser.$('#sp_message_iframe_207015');
browser.pause(5000);
browser.switchToFrame(frame);
browser.setTimeout( 'implicit': 10000 )
let clickAgree = $('button[title="Agree"]');
clickAgree.click();
browser.switchToParentFrame();
【讨论】:
【参考方案2】:场景如下:
-
确保 iframe 存在
使用browser.switchToFrame 切换到 iframe
如果存在嵌套 iframe,请重复步骤 1 - 2
在 iframe 中查找元素
就我无法访问您的应用而言,让我们想象一下 DOM 结构
body
h1
iframe id="message"
h2
<button title="Agree">Agree</button>
div
// switch to iframe
const mainIframe = $('#main')
expect(mainIframe).toExist()
browser.switchToFrame(mainIframe)
// interact with element within iframe
const agreeButton = $('button[title="Agree"]')
expect(agreeButton).toBeClickable()
agreeButton.click()
// switch back to parent frame
browser.switchToParentFrame()
这是一个接受 cookie 并切换到 iframe using webdriverio browser object how to check video is playing or not 的示例
【讨论】:
以上是关于如何使用 webdriverIO js 和 mocha 处理 iframe 内容的主要内容,如果未能解决你的问题,请参考以下文章
WebDriverIO Selenium 将命令行参数从 config.js 文件传递到 Chrome
如何使用 Appium 和 WebDriverIO 在 Windows 应用程序上滚动?
NightwatchJS 和 WebdriverIO 有啥区别?