module Watir
class Browser
def initialize(browser = :firefox, *args)
case browser
when Symbol, String
@driver = Selenium::WebDriver.for browser.to_sym, *args
when Selenium::WebDriver::Driver
@driver = browser
else
raise ArgumentError, "expected Symbol or Selenium::WebDriver::Driver, got #{browser.class}"
end
@error_checkers = []
@current_frame = nil
@closed = false
end
end
end
browser=Watir::Browser.new :ie
调用了Selenium::WebDriver来创建一个浏览器实例
class << self
def start(url, browser = :firefox)
b = new(browser)
b.goto url
b
end
end
事实上也可以采用Watir::Browser.start "http://www.baidu.com",:ie
对ie,chrome均可用,不过对firefox会有报错,这里暂且不表。
再去看一下goto代码:
def goto(uri)
uri = "http://#{uri}" unless uri =~ URI.regexp
@driver.navigate.to uri
run_checkers
url
end
第一行利用正则进行匹配。
接下来利用了Selenium::WebDriver的navigate方法进行跳转。
来看下check机制:
def run_checkers
@error_checkers.each { |e| e.call(self) }
end