我正在使用Watir-webdriver并在我的测试机上同时拥有IE 32位和IE 64位。当我使用
创建浏览器实例时browser = Watir::Browser.new :ie
它默认打开IE 64位(这本身很有趣,因为它不是默认的浏览器)。我希望能够以编程方式指定哪个版本的IE(32位或64位)。这是可能的,如果是这样的话,怎么办呢。
答案 0 :(得分:2)
<强>背景强>
Wlenr-webdriver正在使用的Selenium-webdriver决定了使用的版本:
“驱动程序支持运行32位和64位版本的浏览器。选择如何确定在启动浏览器时使用的”bit-ness“取决于启动IEDriverServer.exe的版本。如果启动32位版本的IEDriverServer.exe,将启动32位版本的IE。同样,如果启动64位版本的IEDriverServer.exe,将启动64位版本的IE。 “ - http://code.google.com/p/selenium/wiki/InternetExplorerDriver
大概你安装了64位版本。
<强>解决方案强>
Selenium-webdriver被硬编码到文件IEDriverServer.exe。最快的解决方案可能是覆盖它。请尝试以下方法:
这是一个非常快速的黑客攻击。我相信这是一个更优雅的解决方案。
require 'rubygems'
require 'watir-webdriver'
#Specify your version - 32bit or 64bit
version = '32bit'
#Determine the binary to use
case version
when '32bit'
$ie_binary = 'IEDriverServer32'
when '64bit'
$ie_binary = 'IEDriverServer64'
else
raise( "Invalid version - #{version}" )
end
#Override the method that determines the binary to get
module Selenium
module WebDriver
module IE
class Server
def self.get
binary = Platform.find_binary($ie_binary)
if binary
new(binary)
else
raise Error::WebDriverError,
"Unable to find standalone executable. Please download the IEDriverServer from http://code.google.com/p/selenium/downloads/list and place the executable on your PATH."
end
end
end
end
end
end
browser = Watir::Browser.new :ie
#=> Browser of your desired IE version should launch
更新 - 添加位选项
为了更好地确定使用哪个浏览器,您可以在创建IE窗口时添加“位选项”。这比上面更好,但仍然是hacky(即全局变量)。
require 'rubygems'
require 'watir-webdriver'
module Selenium
module WebDriver
module IE
class Bridge
alias_method :old_initialize, :initialize
def initialize(opts = {})
$ie_binary = ''
case opts.delete(:bit)
when '32'
$ie_binary = 'IEDriverServer32'
when '64'
$ie_binary = 'IEDriverServer64'
else
$ie_binary = 'IEDriverServer'
end
old_initialize(opts)
end
end
end
end
end
module Selenium
module WebDriver
module IE
class Server
def self.get
binary = Platform.find_binary($ie_binary)
if binary
new(binary)
else
raise Error::WebDriverError,
"Unable to find standalone executable. Please download the IEDriverServer from http://code.google.com/p/selenium/downloads/list and place the executable on your PATH."
end
end
end
end
end
end
#Open and close a IE 32bit browser
browser = Watir::Browser.new :ie, {:bit => '32'}
browser.close
#Open and close a IE 64bit browser
browser = Watir::Browser.new :ie, {:bit => '64'}
browser.close