2012-12-14 47 views
0

在使用硒編寫一些自動化測試之後,我想要一個消息框 告訴測試人員哪些測試已啓動。Selenium中的超時消息框

重要的是,顯示消息框時不得運行測試。 顯示消息框時應暫停它們。

我這樣做是由JavaScript

Object result = ((JavascriptExecutor)TestRunner.driver).executeScript("alert('" + text + "');"); 

現在我想這個消息框來顯示幾秒鐘。我想:

TestRunner.driver.manage().wait(10); 

而且

Selenium selenium = new WebDriverBackedSelenium(TestRunner.driver, TestRunner.driver.getCurrentUrl()); 
selenium.start(); 
selenium.getConfirmation(); 

而且

WebDriverWait waitForOkay = new WebDriverWait(TestRunner.driver, 10); 
waitForOkay.wait(10); 

但警報總是立即在前看不見的,就像有一些

alert.accept(); 

有什麼辦法有一個消息框是eit她點擊「確定」或 某些超時(例如, 10秒)不阻止自動測試?

任何輸入(像其他方式來實現這一點)非常歡迎!

+0

你爲什麼要爲這個消息框?整個想法是讓你的套件完全自動化,你需要人工干預(點擊'確定'提醒),那麼當沒有人在附近點擊確定時,你打算如何運行測試?如果您告訴您的測試人員正在運行什麼測試,請使用日誌文件。 – Arran

+0

我想要一個消息框,因爲PO說他想看看發生了什麼。他甚至想讓測試運行並寫出結果。當然,硒是關於自動化測試的,但如果需要它應該可以進行用戶交互。它似乎工作得很好,除了在後臺運行測試。可能有更好的方法,只是提出一個建議。如果PO要手動開始每個測試,但整個測試只有一次,該怎麼辦? –

回答

0

在這種情況下,等待條件是不必要的,因爲默認情況下,JavaScript警告框....阻止執行,直到您點擊「確定」按鈕。

我試着用示例代碼(C#代碼片段),它工作。

IWebDriver driver = new InternetExplorerDriver(); 
driver.Navigate().GoToUrl("http://www.google.com"); 
IJavaScriptExecutor js = (IJavaScriptExecutor)driver; 
driver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(4)); 
Console.WriteLine("Entering the Sync Call"); 
js.ExecuteScript("alert('"+ Error+"');"); 
Console.WriteLine("Exiting the Sync Call"); 

我希望這有助於...所有最好的:-)

+0

必須嘗試一下。 –

+0

在我的示例中,這似乎不是使用Firefox的Sync調用。警報彈出約0.2秒,然後被神奇地「接受」。我希望它對人來說是可讀的,即顯示大約10秒鐘然後超時。 –

+0

lemme試試FF與FF – Anuragh27crony