我使用的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'并不是指一个打开的选项卡(硒:: webdriver的::错误::不明错误)
该的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
这将打开一个窗口,在那里我可以填写表格,然后在窗口自动关闭我仍然有原来的窗口的工作。 可能不是最好的解决方案,但它适用于现在。
什么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
如果您使用添加到您的现有代码chrome
。 否则,相应地修改,按您的浏览器。
这将保持窗口打开,而当前watir
会话使用。
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {'detach' => false})
browser = Watir::Browser.new :chrome