禁止在Watir中自动关闭窗口

我正在使用Watir与Chromedriver在某些网站上自动提交表单。 我必须登录并提交多个表格。 问题是,当我单击提交按钮页面时页面会自动关闭,所以当我转到(’next_url’)时出现此错误:

/Users/jackz/.rvm/gems/ruby-1.9.3-p327/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/remote/response.rb:52:in`assert_ok’:’auto_id’不引用打开的选项卡(Selenium :: WebDriver :: Error :: UnknownError)

Watir实例仍然存在,但窗口关闭。 我每次都可以创建一个新实例,但是每次我都要再次登录,这需要更长的时间。

那么我怎么能:

在同一个Watir实例中打开一个新窗口

要么

我提交后禁止关闭窗口

require 'watir-webdriver' @b = Watir::Browser.new :chrome @b.goto(URL) @b.buttons.first.click #this is when the window closes @b.goto(NEW_URL) #then I get an error 

谢谢

我找到了自己问题的答案。 我可以使用javascript在Watir中打开一个新窗口:

 b = Watir::Browser.new b.execute_script("window.open()") b.windows.last.use 

这将打开一个窗口,我可以在其中填写表单,然后当窗口自动关闭时,我仍然可以使用原始窗口。 可能不是最好的解决方案,但它现在可以使用。

如果您使用的是chrome ,请将其添加到现有代码中。 否则,根据您的浏览器进行相应修改。

这将使窗口保持打开状态,并且当前的watir会话处于活动状态。

 caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {'detach' => false}) browser = Watir::Browser.new :chrome 

Mrityunjeyan上面提出的是正确的方向,但你需要改变一些事情才能使其发挥作用。

 caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {'detach' => true }) b = Watir::Browser.new('chrome', desired_capabilities: caps) 

请查看此处的文档。 https://sites.google.com/a/chromium.org/chromedriver/capabilities