【问题标题】:Error in running a simple watir script: uninitialized constant Watir::IE (NameError)运行简单的 watir 脚本时出错:未初始化的常量 Watir::IE (NameError)
【发布时间】:2013-03-30 07:20:04
【问题描述】:

我已经安装了 Ruby 2、devkit 和 Watir。

  • 环境:操作系统win7(64位)
  • 安装文件:
    • rubyinstaller-2.0.0-p0-x64.exe
    • DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe
  • 部分宝石列表结果:
    • commmonwatir 4.0.0
    • WATIR 4.0.0
    • win32-进程0.6.6

当我运行一个简单的脚本时:

require 'rubygems'
require 'watir'
require 'watir-webdriver' 
ie = Watir::IE.new
ie.goto("http://www.google.com")

我收到以下错误:

uninitialized constant Watir::IE (NameError)

然后我尝试ie = Watir::Browser.new 而不是ie = Watir::IE.new 仍然出现错误:

cannot load such file watir-classic (loaderror)

然后我尝试安装 watir-classic,再次出现错误:

extconf.rb
libxml2 is missing

谁能帮我解决这个问题?

【问题讨论】:

  • 一般来说require 'watir'require 'watir-webdriver' 但不能同时使用两者。使用其中一种进行测试。 watir = 经典的 IE 唯一 watir。 watir-webdriver = 基于 webdriver 的 watir,支持跨浏览器
  • @ChuckvanderLinden, require 'watir' 不再只是经典的 IE。 Watir 现在是一个metagem,它将根据您要使用的浏览器加载 watir-classic 或 watir-webdriver。
  • 那么如果你使用require 'watir',还需要require 'watir-webdriver'吗?
  • @ChuckvanderLinden,不,你不需要require 'watir-webdriver'。如果您使用的是最新的 watir gem 版本,您应该只需要require 'watir'
  • 在您的宝石列表结果中:watir-classic 不存在。请使用 安装 watir-classic。然后添加 require 'watir-classic' ,不需要 require 'watir-webdriver'

标签: ruby windows-7 64-bit watir watir-webdriver


【解决方案1】:

在您的代码中删除 require 'watir-webdriver' 并添加 require 'watir-classic' 。因此,您的代码应如下所示:

require 'rubygems'
require 'watir'
require 'watir-classic'
ie = Watir::IE.new
ie.goto("http://www.google.com")

警告通知:Watir::IE 常量已弃用,请改用 Watir::Browser 在这种情况下,不需要'watir-classic'。以下代码应该可以工作:

require 'rubygems'
require 'watir'
#require 'watir-classic'
#ie = Watir::IE.new
ie = Watir::Browser.new
ie.goto("http://www.google.com")

【讨论】:

    【解决方案2】:

    基于该错误,我的猜测是 watir-classic 无法安装 nokogiri gem。 Nokogiri 目前不支持 Windows 上的 Ruby x64 - 请参阅 https://github.com/sparklemotion/nokogiri/issues/864

    你可以尝试两件事:

    1. 使用 32 位 Ruby(按照 Nokogiri 问题中的建议)

    2. 使用 IE 以外的浏览器。默认情况下,Browser.new 将使用 watir-classic 启动 IE。使用其他浏览器之一将使用 watir-webdriver,我认为它不依赖于 nokogiri。

    例子:

    require 'watir'
    browser = Watir::Browser.new :chrome
    browser.goto("http://www.google.com")
    

    【讨论】:

    • 非常感谢。我已阅读github.com/sparklemotion/nokogiri/issues/864
    • 我使用了 32 位 Ruby,我的问题得到了解决。再次感谢你。第二个建议似乎也有效,但需要为特定浏览器安装其他东西。
    • 总比不接受要好,很多新用户似乎都会这样做。 ;-)
    【解决方案3】:

    您没有安装 watir-webdriver(或至少在您的 gem 列表结果中列出)。

    gem install watir-webdriver
    

    脚本:

    require 'watir-webdriver'
    ie = Watir::Browser.new :ie
    ie.goto("http://www.google.com")
    

    来源:http://watirwebdriver.com

    如果您更喜欢 watir-classic,可以在此处找到安装和快速入门信息:https://github.com/watir/watir-classic

    【讨论】:

    • 我确实安装了 watir-webdriver。我接受了 Justin Ko 的建议并使用了 32 位 Ruby。问题解决了。谢谢你。
    • 您显示的 gem list 结果部分没有列出“watir-webdriver”,这让我们觉得 gem 没有安装。
    猜你喜欢
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 2016-11-08
    • 2012-05-31
    • 1970-01-01
    • 2015-01-19
    • 2015-10-29
    • 1970-01-01
    相关资源
    最近更新 更多