Watir Webdriver的工作方式是:
Watir 脚本 -> Browser Driver -> Browser ->Screen (or headless)
目前支持的Browser Driver 有IEDriver, ChromeDriver, FFDriver,SafariDriver, HeadlessDriver
我们来看一下对各个browser的支持:
Chrome
标准创建
browser = Watir::Browser.new :chrome
带profile的创建,下例为设置不弹出download窗口,并设置下载默认路径
profile = Selenium::WebDriver::Chrome::Profile.new
profile['download.prompt_for_download'] = false
profile['download.default_directory'] = "/path/to/dir"
browser = Watir::Browser.new :chrome, :profile => profile
带switch的创建,下例为忽略证书错误,关闭popup窗口弹出,禁止自动翻译
browser = Watir::Browser.new :chrome, :switches => %w[--ignore-certificate-errors --disable-popup-blocking --disable-translate]
设置代理
browser = Watir::Browser.new :chrome, :switches => %w[--proxy-server=myproxy.com:8080]
Firefox
标准创建
browser = Watir::Browser.new :firefox
使用默认的profile
browser = Watir::Browser.new :firefox, :profile => 'default'
设置所需的profile
profile = Selenium::WebDriver::Firefox::Profile.new
profile['browser.download.dir'] = "/tmp/webdriver-downloads"
profile['browser.download.folderList'] = 2
profile['browser.helperApps.neverAsk.saveToDisk'] = "application/pdf"
browser = Watir::Browser.new :firefox, :profile => profile
禁止native event,该方法主要是window使用默认的一个较低level的交互方法来与webdrive进行交互,有时候会引起莫名的错误,可以禁止:
profile = Selenium::WebDriver::Firefox::Profile.new
profile.native_events = false
browser = Watir::Browser.new :firefox, :profile => profile
设置代理服务
profile = Selenium::WebDriver::Firefox::Profile.new
profile.proxy = Selenium::WebDriver::Proxy.new :http => 'myproxy.com:8080:, :ssl => 'myproxy.com:8080'
browser = Watir::Browser.new :firefox, :profile => profile
设置使用addon,例如:firebug
profile = Selenium::WebDriver::Firefox::Profile.new
profile.add_extension "../path/to/firebug.xpi"
browser = Watir::Browser.new :firefox, :profile => profile
IE
标准创建
browser = Watir::Browser.new :firefox
IE使用默认配置,也是说,你必须手工配置IE来满足你的需要。
Safari
标准创建
browser = Watir::Browser.new :safari
safari现在支持还不够完善,有待进一步更新。
Headless
Headless不是浏览器,他是ruby对Xvfb的封装,从而使得能headless的linux上运行一个图形界面程序。
Xvfb or X virtual framebuffer 是一种将所有的图形化操作在内存中隐式运行,而不是在屏幕上显式运行的一种服务器。
举个简单的例子
require 'watir-webdriver'
require 'headless'
headless = Headless.new
headless.start
browser = Watir::Browser.start 'www.google.com'
puts b.title
b.close
headless.destroy
通过先生成headless,我们能在非图形界面的操作系统上,运行一个图形界面的程序。