У нас есть 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();
});
});