![](/img/trans.png)
[英]Testing Angular app with Protractor inside iframe hosted by non-Angular app?
[英]Protractor: Testing non-Angular App in an Iframe
我正在使用量角器版本3.3.0为我的非角度应用程序编写e2e测试。 我的应用程序在iframe中加载了另一个非Angular App,我正在尝试使用Protractor将测试写入iframed-in。
我尝试了上面这个,使用browser.driver.ignoreSynchronization = true:
1。
var EC = protractor.ExpectedConditions;
var button = $("div[automation-id='homescreen']")
var isClickable = EC.elementToBeClickable(button);
browser.wait(isClickable, 50000).then(function(){
browser.driver.sleep(500);
button.click();
})
收到错误“失败:未知错误:元素在点(326,624)处无法点击...”
2。
var loc = by.id('myFrame');
el = browser.driver.findElement(loc)
browser.driver.switchTo().frame(el);
收到错误“失败:没有这样的元素:无法找到元素:{”方法“:”css选择器“,”选择器“:”* [id =“myFrame”]“}”
甚至认为el被成功检索..
3。
browser.driver.switchTo().frame(0);
尝试索引1并收到“失败:没有这样的框架..”错误
4。
browser.driver.getAllWindowHandles()
只收到一个窗口......
如果这是页面上唯一的iframe
,则选项3看起来很有希望。 在切换到iframe
之前,我只是等待iframe
出现:
// wait for the frame to be present
var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(element(by.tagName("iframe"))), 5000);
// switch to frame
browser.driver.switchTo().frame(0);
切换到iframe
对于非角度页面
。browser.driver.switchTo()defaultContent();
browser.driver.switchTo()。frame(“Frame id或classname”);
请尝试以下代码,iframe不属于角度应用
browser.ignoreSynchronization = true;
return browser.switchTo().frame(iFrameEle.getWebElement())
.then(function(){
// in the iframe..
})
.then(function(){
// restore sync for angular
browser.ignoreSynchronization = false;
return browser.switchTo().defaultContent();
});
var elem = element(by.xpath('.//div[contains(@id,\'contents\') and contains(@id,\'cke\')]/iframe'));
browser.sleep(3000);
elem.click();
browser.switchTo().frame(elem.getWebElement());
browser.sleep(3000);
element(by.tagName('body')).sendKeys('test'); // entering text on iframe
browser.switchTo().defaultContent();
browser.sleep(3000);
我在我的应用程序和它的工作中使用了上面的代码。 希望它能帮到你。 我首先点击iframe,然后将焦点转移到它。
注意:当我给予睡眠时间时,只有它的工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.