使用.frame JSON Wire Protocol调用可以更深入地进入DOM树,但我无法找到向上移动DOM树的方法。
module.exports = {
"Enter and exit iframes in tree" : function(browser){
browser
//Currently focus is at top level.
.frame('iframeOne')
//Focus is now enters inner frame iframeTwo
.frame('iframeTwo')
//Attempt to move to frame directly
.frame('iframeOne')
//Selenium Error 'no such frame'
//Attempt to move focus up to iframeOne by searching from root.
.element('id', 'iframeOne', function(e){
browser.frame(e.value);
}
//Selenium Error 'no such element'
}
有一个JSON Wire Protocol调用frame / parent,它可以移动到父元素,但NightWatchJS目前不支持它。任何建议将不胜感激。
答案 0 :(得分:1)
在当前的二进制版本中,您需要使用switchToDefaultContent
命令。在Java中,这表现为driver.switchTo().defaultContent()
。这会将您带到框架层次结构的顶部,您可以将树向下导航到您需要的框架。
“导航到父框架”有线协议是全新的。在撰写本文时,大约是几天。在撰写本文时,没有发布的服务器实现能够理解有线协议端点。 Firefox驱动程序仅在最后一天左右实现了它。 IE驱动程序尚未开始工作。除了Java之外,它还没有在任何语言绑定中实现,而且只在源代码树中实现;它还没有以二进制形式发布。如果您有耐心,将来可以使用它(没有可用的时间表,所以不要问),还没有。
答案 1 :(得分:0)
我能够通过将焦点重置回顶级元素并再次向下爬行来解决此问题。
.frame(null)
.frame('iframeOne')
这是一个可行的解决方案。