2016-08-01 131 views
0

我想通過在無頭模式下運行瀏覽器,在我的低規格Windows盒子上節省一些資源。據我所知,PhantomJS + GhostDriver是與Selenium Webdriver一起使用此類任務的標準選擇。然而,嘗試它後,立即遇到警報處理問題,其中doesn't seem to be supported by PhantomJS。具體而言,將返回以下例外:Selenium Webdriver無頭/無GUI自動化

[ERROR - 2016-08-01T04:24:24.894Z] RouterReqHand - _handle.error - {"name":"Invalid Command Method"," . . . "} 

作爲不支持getAlertText的webdriver Command結果執行時:

Alert alert = driver.switchTo().alert(); 

EventFiringWebDriver具體實現該方法:

public Alert alert() { 
    return targetLocator.alert(); 
} 

我我正在尋找替代方法或可行的解決方法。任何人?

+0

你的意思是什麼似乎沒有得到PhantomJS的支持?它只是意味着警報不會被驅動程序本身處理,你需要通過切換到警報和根據您的選擇接受或解僱來處理它... –

+0

@SaurabhGaur我的意思是'getAlertText' WebDriver'命令'不支持內部,將返回一個異常。看我的編輯。 –

+0

您正在調用錯誤的方法。它是'alert.getText();'而不是.. :) –

回答

2

我已經能夠通過執行直接使用JavaScript這樣的警告處理解決的是:

JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; 
jsExecutor.executeScript("window.alert = function(){}"); 
jsExecutor.executeScript("window.confirm = function(){return true;}"); 

目前,似乎有沒有辦法通過WebDriver接口PhantomJS直接執行該操作。

+1

此外解決方案,如果你在無頭模式下運行chrome canary,謝謝! –

相關問題