我是Ruby的新手,所以这可能是一个非常愚蠢的问题。但我们已将此代码用于现有的Ruby安装PC。
def usr_OpenURL(strURL, strBrowserType)
if strBrowserType == "IE"
# Open Browser at the specified URL and Maximise
browser = Watir::Browser.start(strURL)
browser.waitForIE
browser.bring_to_front
browser.maximize
sleep($nSleepTime)
elsif strBrowserType == "Chrome"
browser = Watir::Browser.new :chrome
browser.goto strURL
sleep($nSleepTime)
else
puts "No Known Browser is Declared"
end
return browser
end
然而,在我的电脑上安装相同版本的Ruby并运行代码会返回错误:
undefined method 'start' for Watir::Browser:Class (NoMethodError).
所以我用irb来玩它。
如果我这样做:
require "Watir"
browser = Watir::Browser.start("http://www.google.com")
我收到错误,但如果我这样做:
require "Watir"
browser = Watir::Browser.new
browser = Watir::Browser.start("http://www.google.com")
然后好吧。它会按预期在该URL上打开一个新的浏览器窗口。
比较PC我可以看到watir的不同版本,并且安装了watir-webdriver gems - 所以不确定版本之间是否有什么变化。
写这个ruby代码的人不再在这里了 - 所以我不能问他们为什么他们没有为IE做过.new和Goto。
任何想法都将不胜感激:)谢谢!
更新: 我在watir-classic 3.2.0 gem中找到了这个。想到也许这就是罪魁祸首。
Watir ::浏览器现在是一个类而不是模块 - 如果你正在进行猴子修补,请注意。
答案 0 :(得分:3)
这是watir 4.0中的一个问题。我已为此https://github.com/watir/watir/issues/5打开了一个问题 - 希望我能尽快解决这个问题:)
答案 1 :(得分:2)
据我所知Browser#start
只是Browser#new
和Browser#goto
的快捷方式。我不知道导致错误的原因,但替换
browser = Watir::Browser.start(strURL)
与
browser = Watir::Browser.new :ie
browser.goto strURL
答案 2 :(得分:2)
可能发生错误,因为新PC使用的是Watir 4.0.0,而之前的PC使用的是Watir 3.x版本。最近发布的Watir 4.0.0具有指导watir-classic gem和watir-webdriver gem之间使用的逻辑。
我相信直到你Browser.new
才确定宝石。之后,加载了gem,如果它是watir-classic gem,你将拥有诸如Browser.start
和Browser.attach
之类的方法(因为这些在watir-webdriver中不存在)。
一种可能的解决方案,如果您只使用IE,则直接需要所需的gem。所以:
require 'watir-classic'
而不是
require 'watir'