Chinaunix首页 | 论坛 | 博客
  • 博客访问: 107327
  • 博文数量: 14
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 184
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-01 23:15
个人简介

我只是一个喜欢开发的测试,喜欢测试的开发,喜欢每天都知道得更多一些,更深入一些的感觉。。。。。

文章分类

全部博文(14)

文章存档

2015年(5)

2014年(2)

2013年(7)

分类: Java

2015-07-09 21:34:54

从这一篇开始,我将真实记录自己学习自动化测试框架的整个过程。按目前的打算,将使用WebDriver+Java+TestNG,希望可以深入,再深入一点。做功能测试,重重复复已经让我有些无法忍受了,另外也不想把之前好不容易积攒起来的一点代码技能就这样在这种重复又重复中慢慢耗尽。

 

后续计划用我所在项目组当前的项目作为练手的对象,一步步去解决一个个问题,希望小伙伴们可以一起努力,相互启发,共同精进!

 

 

1.  所需软件及版本

1)        操作系统:  Win7 旗舰版

2)        Eclipse:    3.5.1

3)        JDK:      java7

4)        WebDriver: selenium-java-2.46.0

5)        IEDriverServer_64.exe

 

呃,不要问我哪儿下的安装包,网上,自己搜吧,你一定可以找到的,哈!

 

 

2.  开发环境搭建

默认已经安装了JDK和Eclipse,这不是我们关注的重点,在此只说明如何才能将WebDriver用起来,步骤如下:

 

 

2.1   新建一个Java工程

打开Eclipse,新建一个Java工程WebDriverDome,如果你系统中安装了多个JDK,请把工程的JRE指定为java7,我们的约定,免得后续因为我在工程中用到java7的一些新功能,你找我问怎么你不能用的,哼!


 

 

2.2   WebDriver相关JAR包添加到工程编译路径下

selenium-java-2.46.0从网上下载下来是一个压缩包,将这个压缩包解压缩后包括这样一些文件及文件夹:

 

我们将其中的libs文件夹及两个JAR包拷贝到新建的工程目录下新建的文件夹WebDriver Libs中:

当然你不拷贝也是可以的,但为了避免以后移动了这些文件,工程找不到报错,就拷贝吧。

 

接着将这些JAR包添加到工程的编译路径下:

1)      Package Explore窗口中选中新建的工程,点击右键,选择【Properties】菜单项

2)      在弹出的【Properties for WebDriverDome】对话框中,选择【Java Build Path】-【Libraries】tab页,点击【Add JARs…】按钮

3)      在弹出的【JAR Selection】对话框中,选中WebDriver所有的JAR包后,点击【OK】按钮

 

 

添加完成后,在工程目录中会新增一个【Referenced Libraries】文件夹,包含所有上一步添加的JAR包

 

好了,嗯,就这么简单,其实有使用Eclipse开发过Java项目的人,一看这些JAR包就知道怎么用了,考虑到很多测试人员代码经验少,就写一下吧,呵!

 

接下了,让我们一起写我们的第一个用例——登录。

 

 

3.  第一个用例及遇到的问题

第一个用例就叫……呃,TestCase1吧,嗯,是不是很高大上,哈!

 

在工程的src目录下新建一个包(package)com.webdriver.demo,在包下创建一个类(class) TestCase1:

 

 

3.1   最初的代码

在这个类里面,我们将打开被测系统的登录页面,输入用户、密码,然后点击登录按钮,实现登录系统的功能。代码如下,记得这是最开始的代码,随着之后遇到的问题,我们会不断修改代码以解决这些问题:

点击(此处)折叠或打开

  1. package com.webdriver.demo;

  2. import java.io.IOException;

  3. import org.openqa.selenium.By;
  4. import org.openqa.selenium.WebDriver;
  5. import org.openqa.selenium.WebElement;
  6. import org.openqa.selenium.ie.*;

  7. public class TestCase1 {
  8.     public static void main(String[] args) {        
  9.         // 打开登陆页面
  10.         System.setProperty("webdriver.ie.driver"
  11.                            System.getProperty("user.dir")+"\\IEDriverServer.exe");
  12.         WebDriver driver = new InternetExplorerDriver();            
  13.         driver.get(" style="color:#0000CC;">);
  14.         driver.manage().window().maximize();

  15.         // 输入用户密码
  16.         CharSequence[] csUser = new CharSequence[1];
  17.         csUser[0] = "daiw";
  18.         WebElement txtboxUser = driver.findElement(By.name("userName"));
  19.         txtboxUser.sendKeys(csUser);
  20.             
  21.         CharSequence[] csPW = new CharSequence[1];
  22.         csPW[0] = "1";
  23.         WebElement txtboxPW = driver.findElement(By.name("password"));
  24.         txtboxPW.sendKeys(csPW);
  25.         
  26.         // 点击登录按钮
  27.         WebElement btnLogin = driver.findElement(By.id("btnLogin"));
  28.         btnLogin.click();

  29.         // 关闭WebDriver对象
  30.         driver.close();
  31.     }
  32. }


简单解释一下:

1)        第一部分是打开系统登录页面,因为使用的是IE浏览器,首先要设置指定IEDriverServer.exe的路径,为了方便,我把IEDriverServer.exe放置在了工程根目录下,并用System.getProperty("user.dir")来获取这个目录的绝对路径。接着就是创建一个WebDriver实例来连接系统登录页面,并将窗口最大化。

2)        第二部分是填写用户和密码,关键是获取到这两个文本输入框,我们可以通过查看网页的源文件获得(在网页上点击右键,选择【查看源文件】即可),下面是这两个文本输入框的html代码,红色方框内就是By.name()的参数

3)        第三部分是点击登录按钮登录主页,获取登录按钮与获取用户/密码输入框类似,但是通过id来获取的,查看源文件找到这个按钮的id作为By.id()的参数即可

4)        最后记得关闭WebDriver对象

 

 

3.2   第一个问题:IE安全设置

上面的代码,ms很简单,也很好理解,那就运行试试吧:在类TestCase1代码页上点击右键,选择右键菜单项【Run as】-【Java Application】。

 

就在我们满怀着期待等着我们的第一个用例可以正常地打开登陆页面,成功登陆系统时,它竟然,报错了……就在第2行代码……

 

怎么办?还好,我们有度娘!!!搜了又搜了,终于明白这都是IE安全设置惹的祸!打开IE浏览器,点击菜单【工具】-【Internet选项】,在弹出的【Internet选项】对话框中,选择【安全】tab页,把所有项的【启动保护模式】都去勾选后,点击【确定】按钮。

 

 

3.3   第二个问题:默认浏览器

嗯,这下可以了吧,再来运行一次……怎么可能,还是这一行报错?!难道连度娘都欺骗我?!!

 

且慢!报错内容有变……“目前不是默认的浏览器……”,这个好熟悉啊,难道是因为当前的默认浏览器不是IE,有提示信息?!嗯,这个我知道怎么不让它提示,先试试吧。还是【Internet选项】对话框中,选择【程序】tab页,去勾选关于默认浏览器的提示。

 

 

3.4   第三个问题:关闭IEDriverServer.exe

终于看到熟悉的登陆界面,登陆成功,然后关闭浏览器……,一切是如此的prefect,生活是如此的美好,可以去喝杯咖啡或者tea了……

 

等等,怎么Eclipse界面看着有点不对呢?到底是哪儿不对了?

为什么【Terminate】按钮是红色的?不是一切都已经结束了吗?打开任务管理器看看吧

你看你看,IEDriverServer.exe没有被关闭!!!自己动手吧……

 

点击(此处)折叠或打开

  1.         // 关闭IEDriverServer.exe
  2.         try{
  3.             Runtime.getRuntime().exec("tskill IEDriverServer");
  4.         }catch(IOException ie){
  5.             System.out.println("failed to close IEDriverServer......");
  6.             ie.printStackTrace();
  7.         }

把这段代码加到关闭WebDriver对象之后,Runtime.getRuntime().exec()用来执行外部程序,这个函数会抛出IOException,需用try/catch处理。

 

好了,暂时没问题了,嗯,今天先到这儿吧,我想静静!

 

 

参考资料

1.         Selenium2(webdirver)入门之环境搭建(Java版) http://www.cnblogs.com/puresoul/p/3483055.html

2.         WebDriver如何启动Chrome和IE浏览器 管理员在2009年8月13日编辑了该文章文章。

-->
阅读(1512) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~