javascript - 使用 Nightwatch 访问 iFrame 元素

标签 javascript css dom iframe nightwatch.js

我正在使用 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/

相关文章:

javascript - 使用Object.create()实现多重继承

javascript - DIV 在其内容之前创建换行符

html - 重新排列 twitter bootstrap div 以折叠成不同的顺序

javascript - 如何制作多个按钮来更改不同的 div 背景颜色?

javascript - 如何使 p5.js 中的背景透明但继续隐藏绘制在背景上的元素?

javascript - 仅打开单击的下拉菜单

php - 在网络服务器上存储多种尺寸的图像或调整当前图像的大小

javascript - 检测 DOM 元素顺序的变化

javascript使用onclick创建一个按钮

javascript - React.js – 过滤多个indexOf