Selenium 2 入门-1

上一篇 / 下一篇  2012-12-21 15:51:52 / 个人分类:Selenium

51Testing软件测试网P;Sc-oR V#zn V

简介

V'Lt]o8jOdA0

!__K%?s'`{r0Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中执行这些测试。51Testing软件测试网!}+v\(gunW

51Testing软件测试网%mSl(ji7o

Selenium(以下简称为 Selenium 1)并不是能够在浏览器中自动化功能测试的惟一工具。由 Simon Stewart(来自 Google)创建的 WebDriver 是一个具有类似目标的项目。要控制浏览器,需要依赖采用本机支持的独立客户端。WebDriver 仅提供 Java 绑定,并不能支持 Selenium 1 所能支持的那么多浏览器。51Testing软件测试网 F'wvjG.C

51Testing软件测试网%Ep!hsY5K

Selenium 1 + WebDriver = Selenium 251Testing软件测试网&\)Q5w8p-dg7w

Bi8Xd5^({ KT*s9}0Selenium 1 和 WebDriver 合并成一款性能更佳的产品 Selenium 2(或 Selenium WebDriver),该款产品发行于 2011 年。Selenium 2 具有来自 WebDriver 的清晰面向对象 API,并能以最佳的方式与浏览器进行交互。Selenium 2 不使用 JavaScript. 沙盒,它支持多种浏览器和多语言绑定。在撰写本文时,Selenium 2 为下列程序提供驱动程序:

E;V!g3l'~zFU0
  • Mozilla Firefox
  • Google Chrome
  • Microsoft Internet Explorer
  • Opera
  • Apple iPhone
  • Android browsers
51Testing软件测试网GA-`0Jw%W5x

借助 Selenium 2,您可使用 Java、C#、Ruby、和 Python 编写测试。Selenium 2 还提供基于 HtmlUnit 的无外设驱动,是用于测试 Web 应用程序的 Java 框架。HtmlUnit 运行速度特别快,但它不是一个真正与真实浏览器相关联的驱动。

)rF.W\QH9{?X}cL051Testing软件测试网r)C*c pI8j

目前,Selenium 2 仍处于开发阶段,还有些细节问题正在处理。当前版本为 2.9。针对 Safari 和 Blackberry 的驱动将会在近期集成到产品中。51Testing软件测试网@Bdhn9y#^HG7@

1q'U#iP&c/s~0在本文当中,我们将学习如何利用 Selenium 2 来测试 Web 应用程序。示例展示了如何远程实现测试。我们还将学习如何将编写好的测试从 Selenium 1 转移到 Selenium 2 中。51Testing软件测试网z!qc"b8i&D5r

!W@y o[,uB N0下载本文中所使用的源代码。

L5o0pbYwF0

51Testing软件测试网 ^ Z~%R#I(X

Selenium 2 入门51Testing软件测试网f*u6I h_

7m$`w$N i0在本节,我们将学习如何将 Selenium 2 框架用于 Web 应用程序的一个相对简单的测试中。开发环境采用 Java 语言。您还需要包括 Java 绑定的 selenium-java-<version>.jar(参阅参考资料并下载)。在一个 Maven 项目中,您只需要在 pom.xml 中包含正确的依赖性,如 清单 1所示。

d Fp wt5k0x051Testing软件测试网Qn}v T s_ gG
清单 1. Selenium-java 依赖性
adK6ks"n4A"\%R0
<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-java</artifactId> 
    <version>2.9.0</version> 
 </dependency>
51Testing软件测试网,V0j:Cr*R6X1M
51Testing软件测试网_x)?i?:[

现在,可以开始编写测试。WebDriver API 中的主要组件是WebDriver接口。这一公共接口在每个有效浏览器中都能实现。例如,类FirefoxDriver将用于控制 Mozilla Firefox。清单 2展示了如何在测试当中实例化一个特定的实现。您可以采用最符合您需求的测试框架,比如 JUnit 或者 TestNG。51Testing软件测试网y*Z RpM;EA


GOd p$] ~$B0清单 2. 实例化的FirefoxDriver
dB.u(~(a_sp0
public class Selenium2Example1Test { 
    @Test 
    public void test() { 
        // Instantiate a webDriver implementation 
        WebDriver webdriver = new FirefoxDriver(); 
    } 
 }

5H$}[\-t?%y jX0
51Testing软件测试网)VtoG}4dIg3V

要加载页面进行测试,可利用get()方法。在清单 3中,GitHub 主 (https://github.com) 被加载到先前创建的 Firefox 实例中。51Testing软件测试网Z wca4I} t0]


1j"h6_d:CF(l1M#Ku%d0清单 3. 在测试下加载页面
%E!q I6V1|b)TO0
WebDriver webdriver = new FirefoxDriver(); 
 webdriver.get(https://github.com);

\efO TR1S5G"Y0
51Testing软件测试网 tU$Olt]/Sqj4o

您可在刚加载的页面上添加断言。假如您想要测试页面标题是否等于"GitHub - Social Coding",如下清单 4所示。WebDriver 提供getTitle()方法;您可利用所选的测试框架来生成断言。51Testing软件测试网p!c6PhIXW,C

51Testing软件测试网y+r}*s9W+@
清单 4. 页面标题的断言
T,i)j(]mwhG0
Assert.assertEquals("GitHub - Social Coding", webdriver.getTitle());

!]J6F?R1J0
51Testing软件测试网2zmk$D}2~*LU-k

完成测试以后,最好利用quit()方法来终止 WebDriver 实例,如下 清单 5所示。

q/@#\:?f.Z'z\051Testing软件测试网-Um;Yp2bUCQ
清单 5. 终止 WebDriver 实例
j,q*o-NgN0
webdriver.quit();

0HC\h s8S0

Q/\5Ps:vU0FirefoxDriver只是有效的 WebDriver 实现之一。您可以利用 ChromeDrive 在 Chrome 内部运行测试,来执行相同的测试。清单 6展示了利用 ChromeDriver 的完整示例。

,L/{"g cl}m&rZ0
`CP&E4s%sf+@0清单 6. ChromeDriver 样例51Testing软件测试网g?e,a~-jj
public class Selenium2Example2Test { 
    @Test 
    public void test() { 
        System.setProperty("webdriver.chrome.driver", 
"src/main/resources/drivers/chrome/chromedriver-mac"); 

        // Instantiate a webDriver implementation 
        WebDriver webdriver = new ChromeDriver(); 

        webdriver.get(https://github.com); 

        Assert.assertEquals("GitHub - Social Coding", webdriver.getTitle()); 
    } 
 }

5C1i5l2b4Fmr su0
51Testing软件测试网xfl&N!nJ,x*T

在实例化 ChromeDriver 之前,需要正确设置"webdriver.chrome.driver"系统属性。该属性指出您操作系统的 ChromeDriver 文件位置(参阅参考资料并下载)。清单 6中的示例使用了针对 Mac 的版本;同样可用针对 WindowsLinux 的版本。51Testing软件测试网0R-{_r2H[

51Testing软件测试网$D3B-Ij%Du6Y

要在 Internet Explorer 中执行相同的测试,需要用到InterentExplorerDriver类的实例,如 清单 7所示。

|._n8AQ9\051Testing软件测试网 K;D9TE:n1N+fF
清单 7.InternetExplorerDriver实例化51Testing软件测试网&?@5`W%qmQU)c
WebDriver webdriver = new InternetExplorerDriver();
51Testing软件测试网.Y!q%`G/RrU,a

[Pm8}G(O5l0当采用InterenetExplorerDriver时,可能会遇到一个安全问题提示:"Protected Mode must be set to the same value (enabled or disabled) for all zones"。想要解决这一问题,需要设置特定的功能,如 清单 8所示。

IbW+C S]"yw0
1N'rj8p!Og0清单 8. 为 Internet Explorer 设置安全性功能
8Rz.n|6\j0
DesiredCapabilities capability=DesiredCapabilities.internetExplorer(); 
 capability.setCapability( 
              InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_ 
 IGNORING_SECURITY_DOMAINS, true); 
 WebDriver webdriver = new InternetExplorerDriver(capability);

{"h$d{I0
51Testing软件测试网2^} P)LM Q;KU kFx yl

要在 Opera 中执行测试,需要实例化OperaDriver类,这是由 Opera 直接开发的。记得要将包含驱动的 JAR 包括到项目中。如果您使用 Maven,则仅需增加 清单 9中的依赖性。51Testing软件测试网~qm} ~*E t


]u j*a#pfe_0

TAG:

引用 删除 wangxiwei18   /   2014-04-14 15:10:11
5
 

评分:0

我来说两句

Open Toolbar