2013-07-05 59 views
12

場景: - 我的頁面上也有一個iFrame文本編輯器和一個按鈕。 - 我從父框架切換到iFrame從文本編輯器主體讀取 - 從文本編輯器正文讀取後,我想單擊頁面父框架中的按鈕。 - 爲此,我嘗試使用以下語句從iFrame切換回父框架: webDriver.SwitchTo()。DefaultContent(); - 但我仍然無法找到駐留在父框架中的按鈕元素。從iFrame切換到父框架並使用Selenium Webdriver在父框架中查找元素。 C#

我感謝您的幫助! 謝謝

+0

我們能看到的的HTML的IFrame – Arran

回答

13

這就是你的迴應傢伙。它解決了!

解決辦法:

  • 雖然我用的是webDriver.SwitchTo().DefaultContent();它切換webDriver頁面的最上面的窗口。 [之前我在尋找這個窗口中的按鈕元素,因此無法找到它,因爲按鈕是坐在頁面的主框架中]

  • 切換到主窗口後,我再次切換webDriver到頁面的主框架。這個主框架有按鈕元素。因此我能夠找到按鈕元素。這就解決了這個問題!

所以最終的代碼沒有webDriver.SwitchTo().DefaultContent();但在其位置如下:

_webDriver.SwitchTo().Window(windowHandle); 
    _webDriver.SwitchTo().Frame("mainFrame"); 

注:windowHandle在上面的代碼是在頁面的最頂端窗口的句柄。我想它的價值可能會改變根據瀏覽器,但不知道。

6

我用類似的問題所困擾,我發現我可以通過Window Handle切換回:

string currentWindow = Driver.CurrentWindowHandle; 
// switch to frame and do stuff.. 
Driver.SwitchTo().Window(currentWindow); // switch back 
2

在我的情況下,下面的代碼工作正常:

driver.switchTo().parentFrame(); 
相關問題