2016-11-08 36 views
1

我一直試圖處理使用鉻54.0.2840.87(目前最新的鉻版)和chromedriver 2.25(目前最新的chromedriver)沒有成功硒的警報。 我確定這是一個警報,而不是彈出式窗口(沒有檢查元素選項)。硒與鉻返回異常時處理警報

而且我確信,沒有時機的問題,通過將其處理警報的代碼之前斷點,但它提供了異常:org.openqa.selenium.NoAlertPresentException:毫無戒備開放

這是我一直在試圖使用的代碼,但沒有成功: driver.switchTo().alert().accept();

也試過等待警報使用的代碼是存在,但沒有成功: wait.until(ExpectedConditions.alertIsPresent());

也試過用javascript executeScript接受警報沒有成功: ((JavascriptExecutor)m_driver).executeScript("window.confirm = function(msg){return true;};");

鏈接到我已經收到了警告: https://i.stack.imgur.com/n8FcE.png

感謝您的幫助。

+0

[旁路 「外部協議請求」 彈出硒自動化過程](的可能的複製http://stackoverflow.com/questions/29554564/bypass-external -protocol-request-popup-during-selenium-automation) – stackoverflow

回答

0

這不是一個提示框。所以你不能用傳統的方式處理它。作爲解決方法,您可以從chrome 本地狀態文件中禁用此協議處理程序框。

對於窗口: 本地狀態文件可以在C:\Documents and Settings\<USERNAME>\Local Settings\Application Data\Google\Chrome\User Data下找到。

編輯「本地狀態」文件,並在"caxhost": false,下添加一行以包含您的協議。

對於Linux: 按照步驟從這裏:https://askubuntu.com/questions/465586/how-to-reset-external-protocol-handler-in-chrome

+0

謝謝你的回答。 如果這不是一個提醒,那麼它是什麼? 我需要接受此警報才能運行該應用程序。 有沒有一種強有力的方式可以做到這一點? – MosheG

+0

要了解有關警報框的更多信息,請訪問https://en.wikipedia.org/wiki/Alert_dialog_box。您試圖繞過的對話框是一種不同類型的彈出窗口,它會要求您啓動不同的應用程序。編碼術語中的 –

+0

javascript'alert()'是彈出對話框的函數。 –