【发布时间】: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