如何避免丢失驱动程序对象?
How to avoid loss of driver object?
我正在尝试将我们的测试自动化从 watir-classic 迁移到 watir-webdriver。 (Ruby 2.0, watir-webdriver 0.9.1)
总的来说还不错,但是我们的登录过程让我很头疼。
让我简短地解释一下发生了什么:
- 打开网站 A
- 输入登录凭据并按登录按钮。
- 网站 B 以实际内容打开,而网站 A 关闭。
随着网站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
我正在尝试将我们的测试自动化从 watir-classic 迁移到 watir-webdriver。 (Ruby 2.0, watir-webdriver 0.9.1) 总的来说还不错,但是我们的登录过程让我很头疼。
让我简短地解释一下发生了什么:
- 打开网站 A
- 输入登录凭据并按登录按钮。
- 网站 B 以实际内容打开,而网站 A 关闭。
随着网站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