2017-07-13 25 views
0

我有一些代碼可以通過點擊來自網頁的鏈接打開一個新標籤並自動將視圖轉移到新標籤。當我嘗試從新網頁中選擇元素時,我會收到錯誤,指出這些元素即使存在,也不存在。在測試崩潰之前的大部分時間,選項卡實際上會變回原始狀態,使我相信它實際上是在搜索舊選項卡上的元素。我試圖使用_driver.SwitchTo().Window(_driver.WindowHandles.Last());來希望它能做些什麼,但它只是完全關閉窗口並打開一個新的空白窗口。我如何獲得它,以便我可以從新網頁獲取元素,而不再引用舊選項卡?C#Selenium - 無法獲取新標籤中的元素

回答

0

使用此幫助功能切換到您選擇的選項卡。索引由它們創建的順序決定。所以你默認的tabIndex爲0,如果你打開一個新標籤/窗口將具有tabIndex 1等..

internal void SwitchToTab(int tabIndex) { 
     WebDriver.Instance.Wait(2); 
     var newTab = WebDriver.Instance.Driver().WindowHandles[tabIndex]; 
     Instance.Driver().SwitchTo().Window(newTab); 
     WebDriver.Instance.Wait(2); 
    } 

的等待只是爲讓新標籤負載。這些等待不是好習慣,所以你應該尋找其他方法來等待你正在等待的任何元素/狀態。