2016-05-16 36 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