在Selenium webdriver.switchto()中,"relative = top"会产生错误吗?

Ste*_*oss 2 selenium webdriver selenium-webdriver

我正在使用Selenium WebDriver(v2.2)"切换"到"顶部"框架,如下所示:

webdriver.SwitchTo().Frame("relative=top");
Run Code Online (Sandbox Code Playgroud)

这会生成错误消息:

Unable to locate frame: relative=top
Run Code Online (Sandbox Code Playgroud)

这可能是因为我使用的页面没有框架吗?

编辑

不幸的是,涉及窗口切换的两种解决方案均

webdriver.SwitchTo().Window(winHandle);
webdriver.SwitchTo().DefaultContent();
Run Code Online (Sandbox Code Playgroud)

严格来说,实际上,他们并没有失败.但是,这就是问题所在:假设我在一帧内获取一个IWebElement.这是代码大致的样子:

descend-into-the-frame
grab-the-element
ascend-out-of-the-frame-to-the-top
use-the-element
Run Code Online (Sandbox Code Playgroud)

当我使用-the-element时,我得到一个"缓存中不存在元素"异常.这是因为从框架上升到顶部会切换窗口,从而清除缓存.真烦人 不过我找到了一个解决方法:

ascend-out-of-the-frame-to-the-top
descend-into-the-frame
grab-the-element
use-the-element
Run Code Online (Sandbox Code Playgroud)

这仍然意味着我必须注意元素不在缓存的情况.但至少只要我在拿取元素后立即使用它,我就可以了.

感谢大家的帮助!

Sur*_*rya 11

要从其他框架切换顶部框架,您可以使用:

driver.switchTo().defaultContent();
Run Code Online (Sandbox Code Playgroud)