2016-11-09 73 views
0

我想知道是否有一種很好的方法來處理使用Webdriverjs的if語句中的警報。我嘗試了一些我在這裏找到的和其他網站沒有成功的方法。然而,我對JavaScript和Node.js非常新,所以它可能是我的一個實現。用if語句檢測警報Webdriverjs

具體來說,我正在幾乎相同的頁面上爲許多不同的客戶端進行自動測試。但是,只有某些客戶端在推送特定按鈕時會發出警報。所以我想通過if語句處理這個問題,通過檢測是否存在警報並相應地繼續,否則繼續。

我讀過一篇詳細介紹Java中類似問題的文章,並且回覆者指出,在自動化測試中,您應該始終注意網站的行爲方式,也許這個問題應該完全不同。我能想到的最簡單但最不可取的方法是簡單地寫兩個不同的測試,我可以做。

對代碼的任何建議,以及對這個問題的輸入更普遍的將非常讚賞。

在此先感謝!

回答

1

如果您嘗試訪問存在警報的頁面元素,Selenium會拋出UnhandledAlertException: Modal dialog present異常。由於您似乎知道按鈕會導致警報,因此您應該知道在哪裏嘗試/捕獲此異常並進行適當處理。

然後,您可以使用org.openqa.selenium.Alert包來接受,解除彈出窗口。

http://toolsqa.com/selenium-webdriver/handling-of-alerts-javascript-alerts-and-popup-boxes/

+0

我認爲這會很適合我的工作,但我想我的捕捉基本上什麼也不做。基本上把我的嘗試變成if語句。這可能嗎?當我將catch語句留爲空白時,以下是我的錯誤示​​例: - NoSuchAlertError:不存在警報 - 這是用我的try語句單擊警報上的「確定」按鈕。當警報出現時,這種方式很有效。 – Chris

+0

基本上你想檢查彈出窗口的任何地方都是活動的,你可以嘗試在try/catch頁面上選擇一個項目。如果彈出窗口處於活動狀態,則可以使用catch塊。否則,該計劃將繼續。除非您在catch塊內,否則您不想使用警報方法,因爲您知道彈出窗口實際上已啓動。 – tommybananas