19

场景: - 我有一个带有 iFrame 文本编辑器的页面和页面中的一个按钮。- 我从父框架切换到 iFrame 以从文本编辑器主体读取 - 从文本编辑器的主体读取后,我想单击页面父框架中的按钮。- 为此,我尝试使用以下语句从 iFrame 切换回父框架:webDriver.SwitchTo().DefaultContent(); - 但我仍然无法找到位于父框架中的按钮元素。

我感谢您的帮助!谢谢

4

3 回答 3

16

那是你的回应伙计们。解决了!

解决方案:

  • 当我使用webDriver.SwitchTo().DefaultContent();它时,它会切换webDriver到页面的最顶部窗口。[以前我在此窗口中寻找按钮元素,因此无法找到它,因为按钮位于页面的主框架中]

  • 切换到主窗口后,我webDriver再次切换到页面的主框架。这个主框架有按钮元素。因此,我能够找到按钮元素。这解决了这个问题!

所以最终的代码没有webDriver.SwitchTo().DefaultContent();但有以下内容:

    _webDriver.SwitchTo().Window(windowHandle);
    _webDriver.SwitchTo().Frame("mainFrame");

注意:上面代码中的 windowHandle 是页面最顶层窗口的句柄。我猜它的值可能会根据浏览器而变化,但不确定。

于 2013-07-09T15:25:42.743 回答
11

以下代码运行良好:

driver.switchTo().parentFrame();
于 2017-07-25T12:53:40.457 回答
7

我正在努力解决类似的问题,发现我可以通过以下方式切换回来Window Handle

string currentWindow = Driver.CurrentWindowHandle;
// switch to frame and do stuff..
Driver.SwitchTo().Window(currentWindow); // switch back
于 2014-06-23T22:03:02.913 回答