场景: - 我有一个带有 iFrame 文本编辑器的页面和页面中的一个按钮。- 我从父框架切换到 iFrame 以从文本编辑器主体读取 - 从文本编辑器的主体读取后,我想单击页面父框架中的按钮。- 为此,我尝试使用以下语句从 iFrame 切换回父框架:webDriver.SwitchTo().DefaultContent(); - 但我仍然无法找到位于父框架中的按钮元素。
我感谢您的帮助!谢谢
那是你的回应伙计们。解决了!
解决方案:
当我使用webDriver.SwitchTo().DefaultContent();
它时,它会切换webDriver
到页面的最顶部窗口。[以前我在此窗口中寻找按钮元素,因此无法找到它,因为按钮位于页面的主框架中]
切换到主窗口后,我webDriver
再次切换到页面的主框架。这个主框架有按钮元素。因此,我能够找到按钮元素。这解决了这个问题!
所以最终的代码没有webDriver.SwitchTo().DefaultContent();
但有以下内容:
_webDriver.SwitchTo().Window(windowHandle);
_webDriver.SwitchTo().Frame("mainFrame");
注意:上面代码中的 windowHandle 是页面最顶层窗口的句柄。我猜它的值可能会根据浏览器而变化,但不确定。
以下代码运行良好:
driver.switchTo().parentFrame();
我正在努力解决类似的问题,发现我可以通过以下方式切换回来Window Handle
:
string currentWindow = Driver.CurrentWindowHandle;
// switch to frame and do stuff..
Driver.SwitchTo().Window(currentWindow); // switch back