簡體   English   中英

在 Selenium java 中如何處理彈出窗口

[英]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 命令(在另一個答案中提供)

有不同類型的警報,應按如下所示進行不同處理。

  1. 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);

  2. Javascript 警報:如果彈出窗口是 javascript 類型。 您可以使用 switch to alert 方法。

    Alert alert = driver.switchTo().alert();

  3. DOM 元素類型:有時彈出窗口就像 DOM 元素,動態創建或隱藏直到彈出。 可以使用 find element 方法處理它。

    driver.findElement(locator).Click();

我還沒有解決我的問題,但我發現了一些有趣的事情:當我打開一個彈出窗口時,如果我用 Selenium 打開我的網站,它不會連接到當前會話,即使不要求 Selenium 打開我的彈出窗口但我做我自己。 如果 id 做:

driver.quit()

主窗口將關閉,但不會彈出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM