ruby - 禁止 Watir 中的自动关闭窗口

标签 ruby google-chrome 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:在`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

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

关于ruby - 禁止 Watir 中的自动关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146916/

相关文章:

ruby - 使用 C API 编译 Ruby

ruby-on-rails - 机械师,我如何引用我正在制作的对象并将其传递给关联? (关联类型不匹配)

ruby-on-rails - 如何使用 Rails 应用程序在 Heroku 上正确运行 Selenium Webdriver

ruby - 如何使用 Ruby 在 GUI 中封装 Watir 浏览器实例?

ruby - 参数为 Hash 时的不同解析优先级

ruby - 我可以在生产环境中使用 RVM 'head' ruby​​ 吗?

javascript - SQLITE + Chrome / Safari : "not authorized" ERROR

javascript - Chrome 切换到串行下载脚本

javascript - Chrome 扩展 - 将文件从本地主机加载到 content_scripts

jquery - 元素可以在浏览器上被 jquery 单击,但在 ruby​​-watir 中不能