如何避免丢失驱动程序对象?

How to avoid loss of driver object?

我正在尝试将我们的测试自动化从 watir-classic 迁移到 watir-webdriver。 (Ruby 2.0, watir-webdriver 0.9.1) 总的来说还不错,但是我们的登录过程让我很头疼。

让我简短地解释一下发生了什么:

随着网站A的关闭,驱动也丢失了,我目前无法创建新的驱动实例来连接网站B。

当我尝试创建以下页面对象的实例时,我得到:

variable name="@exception" kind="instance" value="Unable to get browser" type="Selenium::WebDriver::Error::NoSuchWindowError"

我通过以下方式做到这一点:

  def click_loginbtn
    @@driver.button(id: 'loginBtn').click
    return ProjectList.new(@@driver)
  end

有人对此有好主意吗?

您的 driver 仍然有效,您只需要访问新的 window。

要获取活动列表 windows 可用:

@browser.windows

您可以通过句柄、标题、url、索引或 collection

切换到另一个 window
@browser.window(title: 'My new window').use
@browser.windows.first.use