Не удается найти элементы внутри iframe в Safari с помощью Protractor - PullRequest
0 голосов
/ 08 января 2019

У нас есть HTML-страница с iframe. Как вы можете видеть из кода ниже, iframe генерируется javascript (это упрощенная версия, так как мы не можем показать производственный код). Наша цель - написать сквозные тесты с использованием Protractor. Мы хотели бы убедиться в наличии элемента div внутри iframe (тест также приведен ниже). Проблема в том, что тест проходит на Chrome на Mac OS Mojave, но падает на 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();
    });
});

1 Ответ

0 голосов
/ 09 января 2019

сначала нужно переключиться на iframe

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

затем попытайтесь найти элемент, который находится в iframe

Я надеюсь, что это поможет вам

...