1

我正在使用带有 Chromedriver 的 Watir 在某些网站上自动提交表单。我必须登录并提交多个表格。问题是,当我单击提交按钮时,页面会自动关闭,所以当我 goto('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

谢谢

4

3 回答 3

2

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

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

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

于 2013-01-04T17:23:44.167 回答
1

如果您使用chrome. 否则,请根据您的浏览器进行相应修改。

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

caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {'detach' => false})
browser = Watir::Browser.new :chrome
于 2017-03-15T08:34:44.403 回答
1

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

于 2017-06-27T00:45:00.087 回答