2016-05-16 37 views
1

我正在嘗試爲水豚自動化啓動瀏覽器。瀏覽器會自動填充「錯誤窗口」(非瀏覽器窗口)。關閉通過水豚的窗口

我需要在窗口上「關閉/點擊確定」才能打開瀏覽器。我試圖用「AutoIT」可執行文件處理這個彈出窗口。當我手動運行AutoIT文件時,可執行文件成功處理它。

我無法通過水豚腳本執行。代碼如下

ses = Capybara::Session.new(:selenium) 
IO.popen('c:\ruby\handler.exe') #- Tried this step to execute AutoIT .exe file before visit url step. 

這裏沒有運氣。彈出窗口僅在與對象關聯時纔會出現。

ses.execute_script "window.close()" #- Tried this step to close the window with the ses object. no luck in this too. 

ses.visit "https://google.com" 

有沒有辦法以編程方式關閉窗口?

+0

你肯定的確存在「錯誤窗口」在水豚測試打開?它從何而來?你可以[做一個截圖](http://www.opinionatedprogrammer.com/2012/01/screenshots-with-capybara-selenium/)在運行水豚會議期間,並張貼在這裏?一般來說,你應該能夠定義一個單獨的[瀏覽器配置文件](http://stackoverflow.com/a/12752763/1544012)在水豚會話中使用。 – BoraMa

+0

感謝您的回覆BoraMa!錯誤來自Chrome瀏覽器。窗口消息是「無法加載擴展」。管理員禁用加載解包的擴展。我正試圖關閉這個窗口。 – Jennifer

+0

Jennifer,我想說如果你創建一個瀏覽器配置文件,根本不會嘗試加載禁止的擴展,那麼更好的方法可能是完全擺脫錯誤窗口。因爲我懷疑關閉一個瀏覽器錯誤信息是可能的,這是關於所有水豚有權訪問的javascript。 – BoraMa

回答

1

看來你應該能夠註冊使用Chrome瀏覽器自定義硒司機並指定命令行選項來禁用所有擴展,用下面的驅動程序的註冊表的代碼:

Capybara.register_driver :selenium do |app| 
    Capybara::Selenium::Driver.new(app, :browser => :chrome, 
             :switches => %w[--disable-extensions]) 
end 

ses = Capybara::Session.new(:selenium) 
... 

我使用信息here和可用的命令行選項here列表(我沒有自己測試)。

+1

謝謝BoraMa。有效 ! – Jennifer

0

有幾個方法來彈出一個錯誤這樣的:

1)最簡單的一個是做你的方法 - 調用豚訪問導致錯誤彈出的網站之前執行AutoIt腳本。您應確保您正在執行的自動腳本在嘗試關閉之前等待窗口出現(請參閱:https://www.autoitscript.com/autoit3/docs/functions/WinWait.htm以供參考)。

2)你可以執行另一個Ruby腳本/線程(記住ruby中的線程有點複雜),它會在後臺執行autoit腳本(在一個循環中)並等待一個成功的響應。

3)您可以嘗試禁用導致錯誤在您的瀏覽器中彈出的任何內容。

如果您仍然有解決問題的問題,我將能夠在幾個小時內提供方法1和方法2的一些代碼。

0

錯誤Failed to load Extension. Loading of unpacked extensions are disabled by administrator.表示您的系統已設置爲使用Chrome禁用擴展功能。因此,即使您設法關閉它,您也可能無法使用Selenium自動化Chrome,因爲它需要以驅動程序作爲擴展來啓動Chrome。

使其工作的最佳機會可能是禁用限制或將擴展添加到白名單。

這裏有一個關於這個問題的鏈接: https://bugs.chromium.org/p/chromedriver/issues/detail?id=639