【5】第2章 测试环境搭建(2)
2.3 安装浏览器驱动
WebDriver 支持Firefox (FirefoxDriver)、IE (InternetExplorerDriver)、Opera (OperaDriver) 和Chrome(ChromeDriver)。
对Safari 的支持由于技术限制在本版本中未包含,但是可以使用SeleneseCommandExecutor模拟。
还支持Android (AndroidDriver)和iPhone (IPhoneDriver) 的移动应用测试。
还包括一个基于HtmlUnit 的无界面实现,相关驱动为HtmlUnitDriver。
Selenium-WebDriver支持下面的浏览器,以及这些浏览其兼容的操作系统。
> Google Chrome 12.0.712.0+ > Internet Explorer 6, 7, 8, 9 - 32 and 64-bit > Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7 > Opera 11.5+ > HtmlUnit 2.9 > Android – 2.3+ 为移动电话和平板电脑(设备或模拟器) > iOS 3+ 移动电话(设备或模拟器) 以及3.2+ 平板电脑(设备或模拟器)
各个浏览器驱动下载地址:http://www.seleniumhq.org/download/
安装Chrome 浏览器驱动,下载ChromeDriver_win64.zip(根据自己系统下载不同的版本驱动),解压得到chromedriver.exe 文件放到系统环境变量Path 下面。
安装IE 浏览器驱动,下载IEDriverServer_Win32_x.xx.zip,将解压得到IEDriverServer.exe,同样放置到系统环境变量path 目录下。
在Liunx 系统下,同样下载系统对应的浏览器驱动,并将浏览器驱动放置到环境变量Path 所设置的路径下,不同的Linux 环境变量的设置也会有所区别,这里不再详细介绍。
安装完成后可以用IE 和chrome 来替换firefox 运行上面的例子。
import org.openqa.selenium.firefox.*;
....
WebDriver driver = new ChromeDriver();
....
替换为:
import org.openqa.selenium.chrome.*;
....
WebDriver driver = new ChromeDriver();
....
或
import org.openqa.selenium.ie.*;
....
WebDriver driver = new InternetExplorerDriver();
....
如果程序能调用相应的浏览器运行,说明我们的浏览器驱动安装成功。
2.3补充说明:selenium+chromedriver安装及简单使用
解压后里面是一个exe文件,有两种选择:
1.每次使用手动增加路径:
?
1
2
3
|
#手动添加路径
path = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver\chromedriver.exe"
driver = webdriver.Chrome(executable_path=path)
|
2. 添加环境变量path,增加chromedriver所在的目录
(我的电脑--右击属性--高级系统调设置--环境变量--path--把chromedriver.exe的路径添加上即可)
如果报错,考虑版本不对的问题,换个chromedriver.exe!!!
2.4 不同编程语言下使用WebDriver
W3C(万维网联盟)对WebDriver 对做定义和规范。
WebDriver 是一个远程控制界面,支持反省和用户代理的控制权。它提供了一个独立于系统平台和编程语言的线协议(wire protocol)作为一种远程进程程序指示web 浏览器的行为。
该WebDriver API 通过通讯协议和一组接口来发现页面上的DOM 元素中定义的操作,包括控制浏览器的行为。
我们可以这样来理解,例如,国标标准定义插板和插头的生产标准。那么所有的电器厂商生产的插头与所有插板厂商生产的插板都按照这套标准来设计与生产。所以,我们拿到任何一个合格的插头和插板都可以匹配得上。
WebDriver 可以理解成对操作浏览器和页面元素的一套“国标”。那么不同的编程语言都可以按照这套标准实现自己的语言的WebDriver库。
下面展示在不同编程语言下使用WebDriver 实现百度搜索的例子。
在C#中引入Selenium WebDriver 实现自动化测试:
baidu.cs
//添加 Selenium(webdriver)的引用 using OpenQA.Selenium; using OpenQA.Selenium.Firefox; using OpenQA.Selenium.Support.UI; namespace SeleniumTests { class Baidu { static void Main(string[] args) { driver = new FirefoxDriver(); url = "http://www.baidu.com/";; driver.Navigate().GoToUrl(url) var searchBox = driver.FindElementById("kw"); searchBox.SendKeys("Selenium"); ar btnClick = driver.FindElementById("su"); btnClick.Click(); driver.Quit(); } } }
在Ruby 中引入Selenium WebDriver 实现自动化测试:
baidu.rb
#导入Selenium(webdriver)包 require 'Selenium-webdriver' driver = Selenium::WebDriver.for:chrome driver.get "http://www.baidu.com"; driver.find_element(:id, 'kw').send_keys "Hello WebDriver!" driver.find_element(:id, 'su').click driver.quit
在Python 中引入Selenium WebDriver 实现自动化测试:
baidu.py #coding=utf-8 from selenium import webdriver browser = webdriver.Firefox() browser.get("http://www.baidu.com";) browser.find_element_by_id("kw").send_keys("selenium") browser.find_element_by_id("su").click() browser.quit()
在不同的编程语言中会有语法的差异,我们抛去语法的差异性,在不同的语言中实现百度搜索的自动化实例都完成了下面几个操作。
(1)首先导入Selenium(webdriver)相关模块。
(2)调用Selenium 的浏览器驱动,获取浏览器句柄(driver)并启动浏览器。
(3)通过句柄访问百度URL。
(4)通过句柄操作页面元素(百度输入框和按钮)。
(5)通过句柄关闭浏览器。
所以,WebDriver 支持多种编程语言,再确切的可以看作是多种语言都支持WebDriver,唯一的不同在于不同语言实现的类与方法名的命名差异性。当然,这样做的好处不言而喻,每个人可以根据自己熟悉的语言来使用WebDriver 编写自动化测试脚本。