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

Sta*_*orn 17 c# iframe selenium switching

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

我感谢您的帮助!谢谢

Sta*_*orn 15

多数民众赞成你的回应.它解决了!

解决方案:

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

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

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

    _webDriver.SwitchTo().Window(windowHandle);
    _webDriver.SwitchTo().Frame("mainFrame");
Run Code Online (Sandbox Code Playgroud)

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


Dev*_*ave 7

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

string currentWindow = Driver.CurrentWindowHandle;
// switch to frame and do stuff..
Driver.SwitchTo().Window(currentWindow); // switch back
Run Code Online (Sandbox Code Playgroud)


Shi*_*waj 6

在我的情况下,以下代码工作正常:

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