【问题标题】:How to avoid loss of driver object?如何避免驱动程序对象的丢失?
【发布时间】:2015-11-02 14:32:38
【问题描述】:

我正在尝试将我们的测试自动化从 watir-classic 迁移到 watir-webdriver。 (Ruby 2.0,watir-webdriver 0.9.1) 总体来说运行良好,但我们的登录过程让我头疼。

让我简要解释一下会发生什么:

  • 打开网站A
  • 输入登录凭据并按登录按钮。
  • 网站 B 以实际内容打开,而网站 A 关闭。

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

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

变量名="@exception" kind="instance" value="无法获取 浏览器" type="Selenium::WebDriver::Error::NoSuchWindowError"

我这样做:

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

有人对此有好主意吗?

【问题讨论】:

    标签: watir-webdriver pageobjects page-object-gem


    【解决方案1】:

    您的驱动程序仍处于活动状态,您只需要访问新窗口即可。

    要获取可用的活动窗口列表:

    @browser.windows
    

    您可以通过句柄、标题、url、索引或集合切换到另一个窗口

    @browser.window(title: 'My new window').use
    @browser.windows.first.use
    

    【讨论】:

    • 您好,titus,谢谢您的回复。就是这个,加上我需要为 IE 11 添加的注册表项。HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。请注意,FEATURE_BFCACHE 子项可能存在也可能不存在,如果不存在,则应创建它。在此键中,创建一个名为 iexplore.exe 的 DWORD 值,值为 0。有时就这么简单。
    猜你喜欢
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2020-01-05
    • 2021-02-11
    • 2014-01-18
    • 2021-08-27
    • 1970-01-01
    相关资源
    最近更新 更多