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 endbrowser=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