Reputation: 45
I am trying to launch the browser for the capybara automation. The browser is auto populating a "Error window" (non-browser window).
I need to "close/click ok" on the window to open the browser. I tried to handle this popup with the "AutoIT" executable file. When i run the AutoIT file manually, the executable file handles it successfully.
I am not able to execute through the capybara script. The code is as below
ses = Capybara::Session.new(:selenium)
IO.popen('c:\ruby\handler.exe') #- Tried this step to execute AutoIT .exe file before visit url step.
No luck here. The popup appears only when referencing with the object.
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"
Is there a way to close the window programmatically?
Upvotes: 1
Views: 1044
Reputation: 15954
It seems that you should be able to register a custom selenium driver using the Chrome browser and specify the command-line option to disable all extensions, with the following driver registry code:
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome,
:switches => %w[--disable-extensions])
end
ses = Capybara::Session.new(:selenium)
...
I put this together using information here and the list of available command line options here (I did not test this myself though).
Upvotes: 1
Reputation: 42538
The error Failed to load Extension. Loading of unpacked extensions are disabled by administrator.
indicates that your system was set-up to disable extensions with Chrome. So even if you manage to close it, you probably won't be able to automate Chrome with Selenium since it needs to start Chrome with the driver as an extension.
Your best chance to make it work is probably to disable the restriction or to add the extension to the white list.
Here is a link about this issue: https://bugs.chromium.org/p/chromedriver/issues/detail?id=639
Upvotes: 0
Reputation: 58
There are a few approaches to a popup error like that:
1) The easiest one is to do your approach - execute an autoit script before calling capybara to visit the site that results in the error popping up. You should ensure that the autoit script you are executing waits for the window to appear before trying to close it (see: https://www.autoitscript.com/autoit3/docs/functions/WinWait.htm for reference).
2) You could execute another ruby script/thread (keep in mind threading in ruby is a bit complicated) that would execute the autoit script in the background (in a loop) and wait for a succesfull response.
3) You could try to disable whatever is causing the error to pop up in your browser.
I will be able to provide some code following approaches 1 and 2 in a few hours if you will still have problems solving the issue.
Upvotes: 0