从iFrame切换到Parent Frame并使用Selenium Webdriver在Parent框架中查找元素。 C#

时间:2013-07-05 19:52:29

标签: c# iframe selenium switching

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

感谢您的帮助! 感谢

3 个答案:

答案 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();