Selenium用户指南 - 第四章 Selenium 2.0和WebDriver[2]

目录     上一页     下一页

WebDriver驱动器入门

WebDriver是编写测试使用的关键的接口名称,有几个实现。包括:

HtmlUnit驱动器

这个是目前最快和最轻量级的WebDriver实现。正如名称所指示的,这是基于HtmlUnit的。HtmlUnit是一个基于Java的、无GUI的Webbrowser实现。对任何语言绑定(除了Java),要求Selenium服务器使用这个驱动器。

用法

WebDriver driver = new HtmlUnitDriver();

优点

  - WebDriver的最快实现

  - 纯Java解决方案,因此是平台无关的

  - 支持Javascript

缺点

  - 模拟其他浏览器的Javascript行为(参加下面)

在HtmlUnit驱动器中的Javascript

流行的浏览器中没有一个使用,由HtmlUnit(Rhino)使用的Javascript引擎。如果你使用HtnlUnit测试Javascript,结果可能和其他浏览器产生的结果差别很大。

当我们说“Javascript”时,我们实际上意味着“Javascript和DOM”。虽然DOM是由W3C定义的,但每个浏览器在DOM的实现和Javascript如何与之交互上,有它自己的怪异和差别。HtmlUnit有一个令人难忘的DOM的完整实现,以及对使用Javascript的良好支持。但和其他的浏览器没有差别的是:它也有自己的怪异和差别,与W3C的标准以及其他主要浏览器的DOM实现,而不管它模拟其他浏览器的能力。

使用WebDriver,我们必须作出一个选择;是使能HtmlUnit的Javascript能力,而冒着团队遇到问题的风险,还是保持Javascript无效,尽管知道有越来越多的浏览器依赖于Javascript?我们采用保守的方法,当我们使用HtmlUnit时,默认不支持。随WebDriver和HtmlUnit的每个发布,我们重新评估这个决定:在某个时刻,我们希望使能Javascript在HtmlUnit。

使能Javascript

如果你不能等待,使能Javascript支持是非常容易的。

HtmlUnitDriver driver = new HtmlUnitDriver(true);

这将引起HtmlUnit驱动器默认地模拟Firefox 3.6的Javascript处理。

Firefox驱动器

使用一个Firefox插件控制Firefox浏览器。从在机器上安装中剥离使用的Firefox Profile,仅包含Selenium WebDriver.xpi(插件)。几个设置也默认地被改变(参见源代码看看做了哪些改变)。Firefox驱动器有能力运行在Windows,Mac,Linux,并已经测试在版本3.0,3.6,5,6,7和8上测试。

用法

WebDriver driver = new FirefoxDriver();

优点

  - 运行在一个真正的浏览器并支持Javascript

  - 比Internet Explorer驱动器更快

缺点

  - 比HtmlUnit驱动器慢

修改Firefox Profile

假定你希望修改用户代理串(如上所示),你必须修改包含成打的有用的扩展的Firefox Profile。有两种方法可以得到这个Profile。假定那个Profle已经使用Firefox的Profile管理员创建(firefox -ProfileManager)。

ProfileIni allProfiles = new ProfilesIni();
FirefoxProfile profile = allProfiles.getProfile("WebDriver");
profile.setPreferences("foo.bar", 23);
WebDriver driver = new FirefoxDriver(profile);

替代地,如果Profile还没有在Firefox注册:

File profileDir = new File("path/to/top/level/of/profile");
FirefoxProfile profile = new FirefoxProfile(profileDir);
profile.addAdditionalPreferences(extraPrefs);
WebDriver driver = new FirefoxDriver(profile);

当我们开发Firefox驱动器的功能的时候,我们暴露了使用它们的能力。例如,直到感觉Linux上的Firefox的本地事件已经稳定,默认无效它们。要使能它们:

FirefoxProfile profile = new FirefoxProfile();
profile.setEnableNativeEvents(true);
WebDriver driver = new FirefoxDriver(profile);

信息

参见wiki页的Firefox部分,以获得最新的信息。

Internet Explorer驱动器

这个驱动器使用一个动态链接库控制,因此只有在Windows OS可以使用。每一个Selenium的发布,它的核心功能已经在版本6,7,8在XP,以及版本9在Windows 7上经过测试

用法

WebDriver driver = new InternetExplorerDriver();

优点

  - 运行在一个真实的浏览器,支持Javascript连同你的终端用户可见的所有怪异模式。

缺点

  - 显然Internet Explorer驱动器仅仅工作在Windows操作系统!

 

  - 比较而言速度慢(尽管仍然相当快)

  - 在大多数版本XPath没有本地的支持。自动注入Sizzle比其他浏览器满很多,而且在同一个浏览器进行CSS选择器的比较时较慢。

  - 在版本6和7CSS不被本地支持。替代注入Sizzle。

  - 在IE8和9,CSS选择器是本地的,但这些浏览器不完全支持CSS3。

信息

参见wiki页的Internet Explorer部分,以获得最新的信息。请特别注意要求的配置(Required Configuration)部分。

Chrome驱动器

Chrome驱动器由Chromium项目自身维护和支持。WebDriver与Chrome一起工作,通过chromedriver二进制(可以在Chromium项目的下载页找到)。你需要有chromedriver和安装的chrome浏览器的一个版本。chromedriver需要防止在你的系统路径的某个地方,以便WebDriver可以自动地发现。Chrome浏览器本身由chromedriver在缺省的安装路径发现。两者可以由环境变量重写。请参考wiki以获得更多信息。

用法

WebDriver driver = new ChromeDriver();

优点

  - 运行在真实的浏览器,并支持Javascript

  - 因为Chrome是基于Webkit的浏览器,Chrome驱动器可能允许你验证工作在Safari的你的站点。注意因为Chrome使用它自己的V8 Javascript引擎,而不是Safari的Nitro引擎,Javascript的执行可能有差别。

缺点

  - 比HtmlUnit驱动器慢

信息

参见我们的wiki为了最新的信息。更多的信息可以被发现在下载页。

开始运行使用Chrome驱动器。

下载Chrome驱动器可执行文件 ,然后遵循在wiki页的其他指令。

Opera驱动器

参见Opera驱动器的wiki文章,在Selenium wiki以获得关于使用Opera驱动器的信息。

iPhone驱动器

参见iPhone驱动器的wiki文章,在Selenium wiki以获得关于使用Mac iOS驱动器的信息。

Android驱动器

参见Android驱动器的wiki文章,在Selenium wiki以获得关于使用Android驱动器的信息。


© Copyright 2008-2012, Selenium Project. Last updated on Feb 02, 2012.
目录     上一页     下一页

你可能感兴趣的:(JavaScript,浏览器,chrome,selenium,firefox,internet)