2014-04-04 36 views
1

我被問到是否可以在硒web驅動程序中處理多個彈出窗口。 坦率地說,我不知道它。如何同時處理多個彈出窗口

但它是正確的方式。假設我們正在做,我們的屏幕上有3個彈出窗口。所以:

  • 獲取句柄(每個窗口句柄)
  • 聚焦一個窗口
  • 關閉窗口
  • 重複相同並關閉它

請糾正我,如果上我錯了。 感謝和美好的一天。 - S.K

+0

您必須對每個彈出窗口執行SwitchFrame(),然後關閉它。 – bit

+1

是的,這是正確的方法。獲取每個彈出窗口的窗口句柄,使用'driver.SwitchTo()。Window(windowHandle)'切換到它,並使用'driver.Close()'關閉它。 – Faiz

+0

如果你不想繼續你的測試,你總是可以使用driver.quit()。這將關閉WebDriver實例化的所有瀏覽器。 – Sighil

回答

1

由於Faiz在評論中提到,每個窗口的引用都存儲在driver.window_handles數組中。

第一把手應該是你的主窗口,因此關閉彈出窗口(在Ruby中)可能會去是這樣的:

driver.window_handles[1..-1].each do |handle| 
    driver.switch_to.window(handle) 
    driver.close 
end 
driver.switch_to.window(driver.window_handles.first) 

處理一些邊緣情況下,像警報和拋出的異常將採取更多位的代碼雖然。