2013-05-20 55 views
1

我有一個用戶嘗試登錄應用程序(簡單網頁)的實例。登錄成功後,應用程序關閉當前頁面並打開新的網頁。其餘的業務操作從那裏開始。Selenium IE webdriver - 當應用程序關閉瀏覽器窗口並啓動一個新窗口時如何應對?

直到點API點擊登錄按鈕,一切都很好。登錄後(一旦登錄網頁關閉,新會話打開),API將拋出「無法找到瀏覽器」。這是真實的,因爲原始驅動程序實例已被應用程序關閉。

有沒有一種方法可以使用硒來實現這些場景,因爲它們現在非常普遍 - 典型商業應用程序中的一個日子。

謝謝。

回答

2

如果您需要驅動不同的瀏覽器窗口或iframe,則需要使用switchto。從WebDriver faq

問:如何處理彈出窗口?

答:WebDriver提供了處理多個窗口的能力。這是通過使用「WebDriver.switchTo()。window()」方法切換到具有已知名稱的窗口完成的。如果名稱未知,可以使用「WebDriver.getWindowHandles()」獲取已知窗口的列表。您可以將句柄傳遞給「switchTo()。window()」。

+0

您還可以使用SWITCHTO進入一個iFrame但你可能需要記住切換回出的iFrame如果你做。 – djangofan

1

感謝您的答覆。 我做了以下來實現我的查詢。

執行javascript打開新窗口。


IJavaScriptExecutor jScript = driver as IJavaScriptExecutor; jScript.ExecuteScript("window.open()");


切換到新打開的窗口。


List<string> handles = driver.WindowHandles.ToList<string>(); driver.SwitchTo().Window(handles.Last());


啓動導航和新的窗口上登錄操作

driver.Navigate().GoToUrl("Your website"); 

登錄後,應用程序將關閉新窗口,但主要的驅動程序窗口仍然會在世。

實現一個簡單的SWITCHTO()的新窗口中啓動新的業務運營

List<string> handles = driver.WindowHandles.ToList<string>(); 
driver.SwitchTo().Window(handles.Last()); 
相關問題