方案: - 我有一个页面,其中包含iFrame文本编辑器和页面中的按钮。 - 我从父框架切换到iFrame,从文本编辑器主体中读取 - 从文本编辑器的主体读取后,我想单击页面父框架中的按钮。 - 为此我尝试使用以下语句从iFrame切换回父框架: 。webDriver.SwitchTo()DefaultContent(); - 但我仍然无法找到位于父框架中的按钮元素。
感谢您的帮助! 感谢
答案 0 :(得分:14)
这是你的回答家伙。它解决了!
解决方案:
当我使用webDriver.SwitchTo().DefaultContent();
时,它会将webDriver
切换到页面的最顶层窗口。 [以前我在这个窗口中寻找按钮元素,因此无法找到它,因为按钮位于页面的主框架中]
切换到主窗口后,我再次将webDriver
切换到页面的主框架。这个主框架有按钮元素。因此我能够找到按钮元素。这就解决了这个问题!
因此,最终代码没有webDriver.SwitchTo().DefaultContent();
,但其位置如下:
_webDriver.SwitchTo().Window(windowHandle);
_webDriver.SwitchTo().Frame("mainFrame");
注意:上面代码中的windowHandle是页面最顶层窗口的句柄。我猜它的价值可能会根据浏览器而改变,但不确定。
答案 1 :(得分:6)
我正在努力解决类似的问题,发现我可以按Window Handle
切换回来:
string currentWindow = Driver.CurrentWindowHandle;
// switch to frame and do stuff..
Driver.SwitchTo().Window(currentWindow); // switch back
答案 2 :(得分:6)
在我的情况下,以下代码工作正常:
driver.switchTo().parentFrame();