2014-10-06 27 views
1

我使用的是使用C#(頁面工廠模型)的Selenium Webdriver。Selenium:如何處理基於重定向次數顯示的模式對話框

我的應用程序在網站上的第三次重定向之後給出反饋對話框,無論用戶在哪個頁面上。

什麼是處理這種反饋對話的最佳方式?我需要簡單地關閉對話框。

我應該檢查每個頁面的構造函數嗎? 或 我應該在測試用例級別使用一些全局變量保持重定向計數並檢查,在這種情況下,我應該如何保持重定向的軌跡?

或其他更好的解決方案?

回答

1

我不是一個C#硒編碼測試儀(我使用Java)。對於Model對話框,我們可以根據這個link來使用它。

private bool IsAlertPresent() 
    { 
     try 
     { 
      driver.SwitchTo().Alert(); 
      return true; 
     } 
     catch (NoAlertPresentException) 
     { 
      return false; 
     } 
    } 

    private string CloseAlertAndGetItsText() { 
     try { 
      IAlert alert = driver.SwitchTo().Alert(); 
      string alertText = alert.Text; 
      if (acceptNextAlert) { 
       alert.Accept(); 
      } else { 
       alert.Dismiss(); 
      } 
      return alertText; 
     } finally { 
      acceptNextAlert = true; 
     } 
    } 

並基於此link。我們還可以使用

WebDriver popup = webDriver.switchTo()。window(handle);

popup.close(); 

你也可以檢查此鏈接Model Dialog

+0

那麼問題是,它是一個模式對話框,而不是JS警報。 :( – Kirtiraj 2014-10-06 11:35:15

+1

嗨Kirtiraj,謝謝,我編輯了這篇文章 – selva 2014-10-06 11:58:49

+1

我使用了一個方法,通過將上面的IsAlertPresent()包裝在一個「For-If」循環中等待預期的警報,因爲有時可能會延遲警報變得可見。 – CynicalBiker 2014-10-06 15:02:38