場景: - 我的頁面上也有一個iFrame文本編輯器和一個按鈕。 - 我從父框架切換到iFrame從文本編輯器主體讀取 - 從文本編輯器正文讀取後,我想單擊頁面父框架中的按鈕。 - 爲此,我嘗試使用以下語句從iFrame切換回父框架: webDriver.SwitchTo()。DefaultContent(); - 但我仍然無法找到駐留在父框架中的按鈕元素。從iFrame切換到父框架並使用Selenium Webdriver在父框架中查找元素。 C#
我感謝您的幫助! 謝謝
場景: - 我的頁面上也有一個iFrame文本編輯器和一個按鈕。 - 我從父框架切換到iFrame從文本編輯器主體讀取 - 從文本編輯器正文讀取後,我想單擊頁面父框架中的按鈕。 - 爲此,我嘗試使用以下語句從iFrame切換回父框架: webDriver.SwitchTo()。DefaultContent(); - 但我仍然無法找到駐留在父框架中的按鈕元素。從iFrame切換到父框架並使用Selenium Webdriver在父框架中查找元素。 C#
我感謝您的幫助! 謝謝
這就是你的迴應傢伙。它解決了!
解決辦法:
雖然我用的是webDriver.SwitchTo().DefaultContent();
它切換webDriver
頁面的最上面的窗口。 [之前我在尋找這個窗口中的按鈕元素,因此無法找到它,因爲按鈕是坐在頁面的主框架中]
切換到主窗口後,我再次切換webDriver
到頁面的主框架。這個主框架有按鈕元素。因此我能夠找到按鈕元素。這就解決了這個問題!
所以最終的代碼沒有webDriver.SwitchTo().DefaultContent();
但在其位置如下:
_webDriver.SwitchTo().Window(windowHandle);
_webDriver.SwitchTo().Frame("mainFrame");
注:windowHandle在上面的代碼是在頁面的最頂端窗口的句柄。我想它的價值可能會改變根據瀏覽器,但不知道。
我用類似的問題所困擾,我發現我可以通過Window Handle
切換回:
string currentWindow = Driver.CurrentWindowHandle;
// switch to frame and do stuff..
Driver.SwitchTo().Window(currentWindow); // switch back
在我的情況下,下面的代碼工作正常:
driver.switchTo().parentFrame();
我們能看到的的HTML的IFrame – Arran