禁止在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