【问题标题】:Can't find elements inside iframe on Safari using Protractor使用量角器在 Safari 上的 iframe 中找不到元素
【发布时间】:2019-01-08 12:41:47
【问题描述】:

我们有一个带有 iframe 的 html 页面。正如您在下面的代码中看到的,iframe 是由 javascript 生成的(这是简化版本,因为我们无法显示生产代码)。我们的目标是使用 Protractor 编写端到端测试。我们想确保 iframe 中存在 div 元素(测试也在下面给出)。问题是测试在 Mac OS Mojave 上的 Chrome 上通过,但落在 Safari 12.0.2 上。 如果 iframe 不是 JS 生成的,则在 Safari 上测试通过。

<html>
<head>
    <script>

function domOnLoad() {
    const rootElement = document.getElementById('root');

    const iframeElement = document.createElement('iframe');
    iframeElement.frameBorder = 0;
    iframeElement.seamless = true;
    iframeElement.scrolling = 'no';

    rootElement.appendChild(iframeElement);

    const divElement  = document.createElement('div');
    divElement.id = 'iframeRoot';

    const textElement = document.createTextNode('Test Iframe');
    divElement.appendChild(textElement);

    iframeElement.contentDocument.body.appendChild(divElement);

    console.log(rootElement);
}

    </script>
</head>
    <body onload="domOnLoad()">
        <div id="root">
        </div>
    </body>
</html>

describe('Test should have', function() {
    browser.waitForAngularEnabled(false);

    it('div inside iframe with an id iframeRoot', () => {
        browser.get('http://localhost:5000/examples/iframe.html/');
        browser.switchTo().frame(0);

        var divInsideIframe =  $('#iframeRoot');
        expect(divInsideIframe.isPresent()).toBeTruthy();
    });
});

【问题讨论】:

    标签: javascript selenium iframe safari protractor


    【解决方案1】:

    你必须先切换到 iframe

    browser.switchTo().frame('iframe');
    

    然后尝试查找iframe中的元素

    希望对你有帮助

    【讨论】:

    • 我们已经通过索引切换到 iframe:browser.switchTo().frame(0);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    相关资源
    最近更新 更多