从iFrame切换到Parent Frame,并使用Selenium Webdriver在Parent Frame中查找
本文关键字:Parent Frame Selenium Webdriver 查找 iFrame | 更新日期: 2023-09-27 18:21:18
场景:-我有一个带有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