我正在使用量角器版本3.3.0为我的非角度应用程序编写e2e测试。 我的应用程序在iframe中加载了另一个非Angular应用程序,并且我试图使用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()
只收到一个窗口......
答案 0 :(得分:0)
如果这是页面上唯一的iframe
,则选项3看起来很有希望。在切换到它之前,我只是等待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);
答案 1 :(得分:0)
切换到iframe
对于非角度页面
browser.driver.switchTo()defaultContent();
browser.driver.switchTo()。frame(" Frame id或classname");
答案 2 :(得分:0)
请尝试以下代码,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();
});
答案 3 :(得分:0)
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,然后将焦点转移到它。
注意:当我给出睡眠时间时,只有它的工作。