我正在测试的UI正在使用iframe。我试图用" .frame(0)"切换到那个iframe。调用
module.exports = {
"test" : function (browser) {
browser
.url("my_url")
.waitForElementVisible(".frame-application-scroll-wrapper", 30000)
.frame(0)
.waitForElementPresent("#page-content", 30000)
.end();
}
};
然而,#page-content从未被看到,这让我觉得更改帧命令不起作用(但是也没有返回任何错误)。
有什么想法吗?
谢谢, 保罗
答案 0 :(得分:6)
正如Neoaptt所说(谢谢!)问题是iframe元素要么不存在要么没有加载。添加暂停解决了我的问题。
顺便说一下,如果要退出所选框架,则应使用“.frame(null)”
module.exports = {
"test" : function (browser) {
browser
.url("my_url")
.waitForElementVisible(".frame-application-scroll-wrapper", 30000)
// give time to the iframe to be available
.pause(5000)
.frame(0)
.waitForElementPresent("#page-content", 30000)
.frame(null)
// we are now back to the main page
// ... more code here ...
.end();
}
};
还帮助我调试的是使用--verbose选项,例如:
nightwatch -t tests/test4.js --verbose
这将在您的终端中显示nodejs和selenium之间交换的所有数据。
谢谢, 保罗
答案 1 :(得分:2)
最新版的守夜人是.frameParent()
而不是.frame(null)
,以便返回父文档,以防万一其他人找到此帖子:)