我正在尝试为capybara自动化启动浏览器。浏览器自动填充“错误窗口”(非浏览器窗口)。
我需要在窗口上“关闭/单击确定”以打开浏览器。我尝试使用“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 :(得分:1)
您似乎应该能够使用Chrome浏览器注册自定义selenium驱动程序并指定命令行选项以禁用所有扩展程序,并使用以下驱动程序注册表代码:
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome,
:switches => %w[--disable-extensions])
end
ses = Capybara::Session.new(:selenium)
...
答案 1 :(得分:0)
有一些弹出错误的方法是这样的:
1)最简单的方法是做你的方法 - 在调用capybara访问导致错误弹出的网站之前执行自动脚本。您应确保正在执行的自动脚本在尝试关闭之前等待窗口显示(请参阅:https://www.autoitscript.com/autoit3/docs/functions/WinWait.htm以供参考)。
2)你可以执行另一个ruby脚本/线程(请记住ruby中的线程有点复杂),它将在后台执行autoit脚本(在循环中)并等待成功的响应。
3)您可以尝试禁用导致错误的任何内容在浏览器中弹出。
如果您在解决问题时仍然遇到问题,我将能够在几个小时内按照方法1和2提供一些代码。
答案 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