簡體   English   中英

帶有Java的Selenium WebDriver:無法接受警報

[英]Selenium WebDriver with Java: Can't accept alert

在Selenium IDE中錄制時,我可以在彈出窗口中單擊“確定”按鈕,並希望能夠使用以下命令單擊它

driver.findElement(By.linkText("OK")).click();

但是事實並非如此。

同樣,這不起作用。

driver.switchTo().alert().accept();

Selenium引發NoAlertPresent異常。 如果彈出的不是警報,那是什么? 以及如何單擊“是”!

在這種情況下,我希望檢查(驗證)頁面上的警報是否存在,如果存在,請接受。 有點像:

public boolean isAlertPresent() {

  boolean presentFlag = false;

  try {

   // Check the presence of alert
   Alert alert = driver.switchTo().alert();
   // Alert present; set the flag
   presentFlag = true;
   // if present consume the alert
   alert.accept();

  } catch (NoAlertPresentException ex) {
   // Alert not present
   ex.printStackTrace();
  }

  return presentFlag;

 }

在這里您可以獲得詳細信息,也不要忘記逐步調試。

希望這對您有所幫助。

可能是任何東西。 您應該告訴我們。

如果是Java腳本警報,則應該可以

driver.switchTo().alert().accept();

如果Web應用程序自動選擇/突出顯示了“確定”按鈕,則至少可以嘗試發送回車/回車按鍵。

import org.openqa.selenium.Keys
WebElement.sendKeys(Keys.RETURN);

更新


也可能是因為您試圖單擊/接受警報時不存在警報。 要進行快速檢查,請進入4-5秒的睡眠狀態,然后嘗試driver.switchTo().alert().accept(); 一旦確定,就在try and catch循環中等待警報(任何異常處理)。

如果您使用的是最新版本的Webdriver,請在2.20以上的值上填寫

driver.switchTo().alert().accept();

如果警報是與我們單擊時收到的javascript警報類似的javascript警報,則應該可以正常工作

警報演示確認彈出演示

更新

此代碼將幫助您接受警報

driver = new FirefoxDriver();
String baseUrl = "http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(baseUrl);
driver.switchTo().frame(0);
driver.findElement(By.cssSelector("input[type=\"button\"]")).click();
driver.switchTo().alert().accept();

暫無
暫無

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

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