使用没有固定 id 的 nightwatch 访问 iframe
Accessing an iframe with nightwatch without a fixed id
我有
<div class="ap-content" id="office-addon">
<div class="ap-iframe-container iframe-init" id="office-addon__5e83ed1">
<iframe id="office-addon__5e83ed1">
<!-- As it appears in the dev console: -->
#document
<!DOCTYPE html>
<html>
<head></head>
<body>
<div id="addon"></div>
</body>
</html>
</iframe>
<div>
<div>
我想像这样用守夜人访问它:
browser
.waitForElementPresent('#office-addon', 20000);
.frame('#office-addon iframe')
.waitForElementPresent('#addon', 1000)
.end();
但是等待#addon 超时,尽管#addon 在浏览器中。我必须如何编写 frame() 参数? iframe id 随每个页面构建而变化。
iframe 是显示另一个页面的元素,除非您的浏览器不支持 iframe,否则它不会呈现其中写入的任何 html。因此,带有 id #addon 的 div 永远不会首先被渲染。
如果你想通过 id select 它,你可能应该尝试以 select 开头或类似:
.frame("iframe[id^='office-addon']")
如果它始终是您可以在
中编制索引的第 n 个 iframe
// select the first iframe
.frame(0)
// go back to the original html content
.frame()
解决方案如下:
browser.getAttribute('#office-addon iframe', 'id', id => {
browser
.frame(id.value)
...
});
直接没成功
我有
<div class="ap-content" id="office-addon">
<div class="ap-iframe-container iframe-init" id="office-addon__5e83ed1">
<iframe id="office-addon__5e83ed1">
<!-- As it appears in the dev console: -->
#document
<!DOCTYPE html>
<html>
<head></head>
<body>
<div id="addon"></div>
</body>
</html>
</iframe>
<div>
<div>
我想像这样用守夜人访问它:
browser
.waitForElementPresent('#office-addon', 20000);
.frame('#office-addon iframe')
.waitForElementPresent('#addon', 1000)
.end();
但是等待#addon 超时,尽管#addon 在浏览器中。我必须如何编写 frame() 参数? iframe id 随每个页面构建而变化。
iframe 是显示另一个页面的元素,除非您的浏览器不支持 iframe,否则它不会呈现其中写入的任何 html。因此,带有 id #addon 的 div 永远不会首先被渲染。
如果你想通过 id select 它,你可能应该尝试以 select 开头或类似:
.frame("iframe[id^='office-addon']")
如果它始终是您可以在
中编制索引的第 n 个 iframe// select the first iframe
.frame(0)
// go back to the original html content
.frame()
解决方案如下:
browser.getAttribute('#office-addon iframe', 'id', id => {
browser
.frame(id.value)
...
});
直接没成功