我正在使用 Nightwatch 来测试是否为 div
赋予了正确的值在 iframe 中。
我的 html;
<div class="o-ads__inner" id="leaderboard-gpt">
<div id="google_ads_iframe">
<iframe id="some_id">
#document
<html>
<head></head>
<body>
<div id="ad-data" creative-id="53134803289">
<!-- All of the stuff -->
</div>
</body>
</html>
</iframe>
</div>
<iframe><!-- Another iframe (I don't want) --></iframe>
</div>
这是我的守夜人测试;
module.exports = {
'Leaderboard Visibility' : function (client) {
client
.url(some_url)
.waitForElementVisible('body', 5000)
.waitForElementPresent('#leaderboard > iframe', 10000)
.pause(5000)
.frame(0)
.pause(5000)
.waitForElementPresent('div#ad-data', 5000)
.assert.attributeContains('div#ad-data', 'creative-id', '53134803289')
.end();
}
};
我从 Nightwatch 得到的错误是 Timed out while waiting for element <div#ad-data> to be present for 5000 milliseconds.
通过在失败行之前进行检查,我知道它是。
我输入了 2 .pause(5000)
s 因为类似的问题表明 iframe 中的内容加载速度不够快可能是个问题。我不认为这里是这种情况,因为我已经进行了一些调试,但我暂时将它们留在那里。
我在想我无法访问 div#ad-data
因为 iframe 有它自己的 contentDocument
属性,其中包含 head
& body
(以及随后的 div
s)。
如何声明 div
的值iframe 中的属性 contentDocument
使用守夜人?
最佳答案
为您的第一个 iframe <iframe id="some_id">
使用 .frame('some_id')
.
关于javascript - 使用 Nightwatch 访问 iFrame 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34316712/