禁止自动闭合中的Watir窗口(Suppress auto-closing window in Wa

2019-10-17 13:49发布

我使用的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

谢谢

Answer 1:

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

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

这将打开一个窗口,在那里我可以填写表格,然后在窗口自动关闭我仍然有原来的窗口的工作。 可能不是最好的解决方案,但它适用于现在。



Answer 2:

什么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



Answer 3:

如果您使用添加到您的现有代码chrome 。 否则,相应地修改,按您的浏览器。

这将保持窗口打开,而当前watir会话使用。

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


文章来源: Suppress auto-closing window in Watir