[英]In Selenium java how to handle the pop up
我使用 selenium 2,瀏覽器版本是 IE 11。我在處理彈出窗口時遇到問題。
場景一:
driver.findElement(By.id("I create modal window")).click();
Set<String> windows = driver.getWindowHandles();
System.out.println(windows.size());
我得到的輸出為2 。
場景:2 (概念相同)
driver.findElement(By.id("I create pop up")).click();
Set<String> windows = driver.getWindowHandles();
System.out.println(windows.size());
我得到的輸出為1 。
我無法切換到彈出窗口。 有時彈出響應就像未連接一樣,而且彈出窗口的大小比它應該的要小得多。
會有什么問題
注意:元素 id 不是真實的
從您的問題來看,您似乎想切換到彈出窗口。
窗口處理程序用於在瀏覽器窗口之間切換。
警報處理程序用於在彈出消息之間切換。
如果您想接受/是/確定警報:
Alert alert = driver.switchTo().alert();
alert.accept();
如果您想關閉/否/取消警報:
Alert alert = driver.switchTo().alert();
alert.dismiss();
您必須首先檢查其窗口或警報。
只需嘗試檢查該彈出窗口中的元素,如果您能夠檢查彈出窗口中的元素,則它的窗口因此使用 switch to window 命令,如果不是,則它是警報。 所以使用 switch to alert 命令(在另一個答案中提供)
有不同類型的警報,應按如下所示進行不同處理。
Windows 類型:如果您的彈出窗口在新窗口中打開,您可以使用獲取窗口句柄並切換到窗口方法來處理它。
driver.selectElement(By.id("I create modal window")).click(); Set<String> windows = driver.getWindowHandles(); System.out.println(windows.size()); for( String window : windows) driver.switchToWindow(window);
Javascript 警報:如果彈出窗口是 javascript 類型。 您可以使用 switch to alert 方法。
Alert alert = driver.switchTo().alert();
DOM 元素類型:有時彈出窗口就像 DOM 元素,動態創建或隱藏直到彈出。 可以使用 find element 方法處理它。
driver.findElement(locator).Click();
我還沒有解決我的問題,但我發現了一些有趣的事情:當我打開一個彈出窗口時,如果我用 Selenium 打開我的網站,它不會連接到當前會話,即使不要求 Selenium 打開我的彈出窗口但我做我自己。 如果 id 做:
driver.quit()
主窗口將關閉,但不會彈出
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.