Protractor:在Iframe中测试非角度应用程序
Protractor: Testing non-Angular App in an Iframe
我正在为我的非角度应用程序编写e2e测试,使用量角器版本3.3.0。我的应用程序在iframe中加载另一个非Angular应用程序,我正试图用Protractor为iframe编写测试。
我使用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();
})
收到错误"Failed:unknown error:Element is not clickable at point(326624)…"
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
出现,然后再切换到它:
// 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("帧id或类名");
请尝试以下代码,iframe不属于angular应用
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,然后将焦点转移到它上。
注意:当我给睡眠时间时,它只起作用。
相关文章:
- 使用Jest测试React Native应用程序
- Protractor:在Iframe中测试非角度应用程序
- 使用Node.js在应用程序引擎上进行本地单元测试
- 如何在rails应用程序中测试AJAX加载的内容
- 单页应用程序的javascript集成测试
- 测试Ember.JS应用程序失败,返回ReferenceError:未定义Ember
- 如何测试JavaScriptSVG/Canvas应用程序
- 在对javascript/NodeJS应用程序进行原型设计时,应该测试什么,不应该测试什么
- Protractor和Angular:如何在应用程序中一个接一个地测试两个页面
- 使用karma浏览器对AngularJS应用程序进行单元测试
- "未定义“角度”;在Liferay中存储的角度应用程序上执行Protractor测试时出错
- Meteor测试/部署iOS应用程序以连接真实服务器(而非本地主机)
- 用于以用户体验为中心的web应用程序回归测试的工具和技术
- 在前端测试 react + redux 应用程序时忽略与浏览器相关的变量
- 如何使用业力和ng-scenario测试Angular/Umbraco混合应用程序
- 如何使用具有多个入口点的 Webpack 和 Gulp 来转译应用程序和测试目录
- webrtc 应用程序的自动化测试
- 当使用 Jasmine 对我的 angularJS 应用程序进行单元测试时,$interval是未定义的
- 聊天应用程序-测试两个客户端之间的交互
- 选择器“;我的应用程序测试“;与任何元素都不匹配