2012-04-27 36 views
2

我已經用java testng編寫了一個用於提交表單的selenium代碼。點擊提交按鈕後,頁面導航到謝謝頁面。但在加載之前,謝謝您獲得一個安全警告對話框,其中包含名爲「繼續」和「取消」的選項。如何點擊繼續通過硒控制。沒有辦法獲得繼續按鈕的xpath或id。如何使用Selenium在安全警告對話框中單擊一個選項?

+0

我通常使用操作系統密鑰發送命令,例如Windows的SendKeys,併發送一個回車鍵或一個Tab鍵,然後按Enter鍵。 我知道這不是一個非常堅實或聰明的答案,但它完成了工作,我花了一些時間嘗試與WatiN和Selenium一起完成工作,但沒有取得多大成功。 – Nashibukasan 2012-04-27 06:20:44

+0

我已經使用這個selenium.KeyPress(「quicksearchtextcriteria」,「13」); 但它不起作用 – bumblebee87 2012-04-27 06:30:04

+0

我在說的是SendKey方法,它不依賴於它只是模擬按鍵在鍵盤上按下的元素。 – Nashibukasan 2012-04-28 07:43:43

回答

0

如果是在頁面的加載一個JS確認框,然後(作爲docs say),你不能做太多。硒2(WebDriver)可以在一個更好的方式來處理這些對話框:

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

如果這是一個Firefox的確認,你不能做任何事情硒。

我想給java.awt。 Robot一試。

1

曾有同樣的問題,這個工作對Firefox 13和硒2.0

用狙得到窗口信息。 對於Firefox 13的Windows類是MozillaDialogClass WindowName是安全警告。

申報進口

[DllImport("user32.dll")] 
public static extern int FindWindow(string className, string windowName); 

化妝方法

public static void SetOkButton(string className, string windowName) 
    {    
     int handle = FindWindow(className, windowName); 

     if (handle > 0) 
     { 

      if (SetForegroundWindow(handle)) 
      { 
       SendKeys.SendWait("{ENTER}"); 
      } 
     } 
    } 

調用該方法

SetOkButton("MozillaDialogClass", "Security Warning"); 
+0

的SendKeys只是想知道什麼是修復一個鏈接如果你在Mac上運行。 – Rambo7 2014-04-04 22:08:10

1

記得之前出現,否則實際上出現警報之前你的代碼可以執行添加等待。以下代碼正在爲我工​​作

private void acceptSecurityAlert() { 

    Wait<WebDriver> wait = new FluentWait<WebDriver>(driver).withTimeout(10, TimeUnit.SECONDS)   
                  .pollingEvery(3, TimeUnit.SECONDS)   
                  .ignoring(NoSuchElementException.class);  
    Alert alert = wait.until(new Function<WebDriver, Alert>() {  

     public Alert apply(WebDriver driver) { 

      try { 

       return driver.switchTo().alert(); 

      } catch(NoAlertPresentException e) { 

       return null; 
      } 
     } 
    }); 

    alert.accept(); 
}