使用没有固定ID的夜视访问iframe

时间:2017-11-14 12:39:45

标签: iframe frame nightwatch.js

我有

<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会随着每个页面构建而变化。

3 个答案:

答案 0 :(得分:1)

如果你想通过id选择它,你可能应该尝试使用选择器启动,如:

alpha='auto'

如果它始终是第n个iframe,则可以在

中编入索引
.frame("iframe[id^='office-addon']")

答案 1 :(得分:1)

解决方案如下:

browser.getAttribute('#office-addon iframe', 'id', id => {
  browser
    .frame(id.value)

    ...
});

它没有直接起作用。

答案 2 :(得分:-1)

iframe是显示其他页面的元素,除非您的浏览器不支持iframe,否则它不会呈现其中的任何html。所以带有id #addon的div永远不会被渲染。