---------------------------------------------------------------------------------------------------------

  一、Selenium-RC 是 selenium-remote control 缩写,是使用具体的语言来编写测试类。

  二、准备工作: 1,下载 selenium 了,到http://www.openqa.org/selenium/下载就可以了,记得选择selenium-rc 的版本

  2, 学习一下xpath 的知识。有个教程:http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html

  3, 安装 jdk1.5

  三、selenium-rc 一些使用方法

  1,解压selenium-rc压缩包

  2,启动服务器

  Selenium Server是用JAVA实现的,相应的库文件在HOME/server/selenium-server.jar。运行如下代码从命令行启动:

  java 代码 : java -jar selunium-server.jar

  四、编写测试用例

  需要的JAR: selenium-java-client-driver.jar;junit

  编写一个JUNIT的单元测试,要构建一个Selenium,包括如下步骤:

  * 构建一个Selenium实例

  * 启动Selenium实例

  * 执行Selenium命令,并验证结果。

  * 关闭Selenium实例

  如下是一个示例,用来测试http://www.google.com/,查找selenium,期望结果中包含"OpenQA: Selenium"

1. package com.thoughtworks.selenium;     
   2.  
   3. import junit.framework.*;  
   4.  
   5. import org.openqa.selenium.server.*;  
   6.  
   7. public class GoogleTest extends TestCase  
   8. {  
   9.    private Selenium selenium;  
  10.  
  11.    public void setUp() throws Exception {  
  12.         String url = "http://www.google.com";  
  13.        selenium = new DefaultSelenium("localhost", SeleniumServer.getDefaultPort(), "*firefox", url);  
  14.        selenium.start();  
  15.     }  
  16.      
  17.    protected void tearDown() throws Exception {  
  18.        selenium.stop();  
  19.    }  
  20.      
  21.    public void testGoogleTestSearch() throws Throwable {  
  22.         selenium.open("/intl/zh-CN/");  
  23.         selenium.type("q", "selenium");  
  24.         selenium.click("btnG");  
  25.         selenium.waitForPageToLoad("30000");  
  26.         assertEquals("selenium - Google 搜索", selenium.getTitle());
  27.       
  28.     }  
  29.       
  30. }

 五、多环境测试

package test;

import org.junit.Test;

import junit.framework.TestCase;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;
/**
* 多浏览器测试
* @author hgz
*
*/
public class NewTest extends TestCase {
@Test
public void testNew() throws Exception {
Selenium selenium = new DefaultSelenium("localhost", 4444, "*chrome",
"http://www.google.cn");
script(selenium);
}

@Test
public void testNew2() throws Exception {
Selenium selenium = new DefaultSelenium("localhost", 4444, "*iehta",
"http://www.google.cn");
script(selenium);
}

private void script(Selenium selenium) throws Exception {
try {
selenium.start();
selenium.open("http://www.google.cn/");//调用 selenium.open 方法,浏览器会打开相应的页面
selenium.type("q", "selenium");//使用 type 方法来给输入框输入文字
selenium.click("btnG");
selenium.waitForPageToLoad("30000");//等待页面载入
assertEquals("selenium - Google 搜索", selenium.getTitle());//看看新的页面标题是不是我们想要的。
} catch (Exception e) {
throw e;
} finally {
selenium.stop();
}
}
}

六、如何选取元素

  selenium提供如下强大的定位元素的方法。

id=id
name=name
dom=javascriptExpression
xpath=xpathExpression
link=textPattern
css=cssSelectorSyntax

  1 通过ID,name选择元素  :  如 selenium.type("id=q","百度"); selenium.type("name=search","百度")

  2 link= 根据链接文字来操作:如 selenium.click("link=个人资料");

  3 根据XPath来选择元素  : XPath Checker

* xpath=//img[@alt='The image alt text']
* xpath=//table[@id='table1']//tr[4]/td[2]
* xpath=//a[contains(@href,'#id1')]
* xpath=//a[contains(@href,'#id1')]/@class
* xpath=(//table[@class='stylee'])//th[text()='theHeaderText']/../td
* xpath=//input[@name='name2' and @value='yes']
* xpath=//*[text()="right"]
如: selenium.type("xpath=//input[@name='user.email']", "xxx@123.com"); // 向input中type为text的栏位键入信息
selenium.check("xpath=//input[(@name='user.sex')and(@value='男')]");// 向input中type为radiod的 选取

  4 dom选择

* dom=document.forms['myForm'].myDropdown
* dom=document.images[56]
* dom=function foo() { return document.links[1]; }; foo();

  5 css选择器

  这个不常用,它可以支持css2, css3选择器

* css=a[href="#id3"]
* css=span#firstChild + span

  七、使用selenium 这个对象来进行测试

  1  获取标 : assertEquals("Insert title here", selenium.getTitle());

  2  判断页面是否存在一个user.email元素  :assertTrue(selenium.isElementPresent("xpath=//input[@name='user.email']"));

  3  得到文本框里的文字:   assertEquals(selenium.getValue("xpath=//input[@name='user.username']"),"xxxaas");

  4  测试check box  :    assertTrue(selenium.isChecked("xpath=//input[(@name='user.sex')and(@value='男')]"));

  5  点击提交按钮   : selenium.click("xpath=//input[@type='button']");

  6  等待页面载入   : selenium.waitForPageToLoad("2000");

  7  验证指定文本出现在提交给用户的页面上: assertTrue(selenium.isTextPresent("验证码输入有误,请核实后再输入"));

  8  判断下拉框里选择了哪个选项 :assertEquals(selenium.getSelectedIndex("xpath=//SELECT[@name='HATIMING']"), "1");

  9  如何测试一些错误消息的显示? assertTrue(selenium.getBodyText().indexOf("错误消息")>=0);

  getBodyText 返回的时浏览器页面上的文字,不回包含html 代码的,如果要显示html 代码,用下面这个:selenium.getHtmlSource();

  八、Firefox 的插件

  1 XPath Checker :可以用这个工具测试简化我们的xpath表达式

  2 Firebug

  3 Selenium IDE

  4 Execute JS

初识Selenium(二)的更多相关文章

  1. 初识JavaScript(二)

    初识JavaScript(二) 我从上一篇<初识JavaScript(一)>知道和认识JavaScript的词法结构,也开始慢慢接触到了JavaScript的使用方法,是必须按照JavaS ...

  2. selenium初识(二)——之webdriver API

    配置完的环境之后,我们先来写一个小脚本: # __Author__:"Jim_xie" from selenium import webdriver from time impor ...

  3. java selenium (二) 环境搭建方法一

    webdriver 就是selenium 2.    webdriver 是一款优秀的,开源的,自动化测试框架. 支持很多语言.  本文描述的是用java Eclipse 如何搭建环境 阅读目录   ...

  4. 初识Selenium以及Selenium常用工具的简单介绍

    一.为什么要学习自动化测试? 在互联网行业中敏捷开发小步快跑,快速迭代,测试环节中回归测试任务大繁琐,手工测试容易漏测,自动化测试可以提高测试效率保证产品质量. 二.学习的层次模型 1.单元自动化测试 ...

  5. python初识(二)

    目录: 进制 基本数据类型 整形 布尔值 字符串 列表 元祖 字典 集合 range & enumerate 一.进制 二进制转换十进制计算: 十进制:==47 一个字节公式:==128 64 ...

  6. Selenium二次封装-Java版本

    package com.yanfuchang.selenium.utils; import java.awt.AWTException; import java.awt.Robot; import j ...

  7. Selenium二次封装-Python版本

    from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from seleni ...

  8. python网络爬虫之自动化测试工具selenium[二]

    目录 前言 一.获取今日头条的评论信息(request请求获取json) 1.分析数据 2.获取数据 二.获取今日头条的评论信息(selenium请求获取) 1.分析数据 2.获取数据 房源案例(仅供 ...

  9. Selenium(二)---无界面模式+滑动底部

    一.使用无界面模式 1.正常情况启动 selenium 是有界面的 2.有些情况下,需要不显示界面,这时只要设置一下参数就可以实现了 # 不想显示界面可以用 Chrome——配置一下参数就好 from ...

随机推荐

  1. poj 1687 Buggy Sat 简单计算几何

    暑期集训出的第一道一血 感觉自己萌萌哒…… 这道题本身并没有坑点 仅仅是翻译巨坑…… 解大腿在做B 安学长在做E 我闲着也没事 就一个词一个词翻译F…… 最后感觉…… 题干大多数都看不懂…… 也都没啥 ...

  2. VS中调试时监控线程的最后错误代码

    进行调试的时候,监控线程的最后错误代码是非常有用的. 在 Microsoft Visual studio 中,Microsoft 的调试程序支持一个非常有用的特性,即可以配置 Watch 窗口,以便始 ...

  3. $and $not null 正则表达式

    查询MasterID大于1且MasterType等于TestType的文档: db.SysCore.find({$and:[{"MasterID":{$gt:1}},{" ...

  4. Openjudge-计算概论(A)-求分数序列和

    描述: 有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和.输入输入有一行:正整数n.输出输出有一行:分数序列的和(浮点数,精确到小数点后4位) ...

  5. B - ACboy needs your help(动态规划,分组背包)

    B - ACboy needs your help Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  6. Python 学习笔记10

    念念不忘,必有回响. 今天继续学习Python 类.

  7. 对方网络ping不通

    后台接口往往部署在其他服务器上如果ping不同 很大可能是因为对方开防火墙的原因 解决方法:控制面板-windows防火墙-打开或关闭windows防火墙

  8. 1001. A+B Format

    Calculate a + b and output the sum in standard format -- that is, the digits must be separated into ...

  9. Jena文档《An Introduction to RDF and the Jena RDF API》的译文

    前言本文是一篇对W3C的资源描述框架(RDF)和 Jena(一个Java的RDF API)的教程性介绍. 本文是为那些不熟悉RDF的, 以及那些通过建立原形可以达到最好学习效果的, 或是因为其他原因希 ...

  10. Android Studio 项目结构

    在Android Studio中创建项目后,会出现 activity_main.xml 和 MainActivity.java 两个文件 其中  Java文件定义了一个Activity,当应用运行时, ...