此 文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,通过 ID、name、xpath、cssSelector、linkText、className、partialLinkText、tagName 的实战实例源代码演示 Selenium 元素定位的 8 种方法,源代码测试通过日期为:2015-01-26 00:18,请知悉。注意:其中通过 tagName 定位元素时,返回的是一个 WebElement 的数组,需要根据实际的测试需求对其进行进一步的处理。

希望能对初学 Selenium2 WebUI 自动化测试编程的亲们有所帮助。若有不足之处,敬请大神指正,不胜感激!

以下为 Selenium 的 8 种元素定位的 Java 自动化测试脚本实例源代码,敬请参阅!

 /**
* Aaron.ffp Inc.
* Copyright (c) 2004-2015 All Rights Reserved.
*/
package main.java.aaron.sele.demo; import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit; import org.openqa.selenium.By;
import org.openqa.selenium.InvalidElementStateException;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities; /**
* UI自动化功能测试脚本:元素定位示例-通过百度首页搜索框及登录链接实例演示
* 1.通过 ID 查找元素
* 2.通过 name 查找元素
* 3.通过 xpath 查找元素
* 4.通过 cssSelector 查找元素
* 5.通过 linkText 查找元素
* 6.通过 className 查找元素
* 7.通过 partialLinkText 查找元素
* 8.通过 tagName 查找元素(查找的结果为元素数组)
*
* @author Aaron.ffp
* @version V1.0.0: autoUISelenium main.java.aaron.sele.demo Selenium_LocationDemo.java, 2015-1-25 22:59:55 Exp $
*/
public class Selenium_LocationDemo { private static WebDriver webdriver;
private static String baseUrl; // 百度首页网址
private static WebElement search; // 百度搜索框-页面元素
private static String element_id; // 百度搜索框-ID
private static String element_name; // 百度搜索框-name
private static String element_xpath; // 百度搜索框-xpath
private static String element_cssSelector; // 百度搜索框-cssSelector
private static String element_linkText; // 登录链接-linkText
private static String element_className; // 百度搜索框-className
private static String element_partialLinkText; // 登录链接-partialLinkText
private static String element_tagName; // 百度搜索框-tagName /**
* Chrome WebDriver 设置, 网址及搜索内容初始化, 打开 Chrome 浏览器
*
* @author Aaron.ffp
* @version V1.0.0: autoUISelenium main.java.aaron.sele.demo Selenium_LocationDemo.java chromeStart, 2015-1-25 23:03:38 Exp $
*
*/
public static void chromeStart(){
/* 设定 chrome 启动文件的位置, 若未设定则取默认安装目录的 chrome */
System.setProperty("webdriver.chrome.bin", "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe");
/* 设定 chrome webdirver 的位置 */
System.setProperty("webdriver.chrome.driver", "C:/Windows/System32/chromedriver.exe");
/* 百度首页网址赋值 */
baseUrl = "http://www.baidu.com/"; element_id = "kw"; // 百度搜索框-ID
element_name = "wd"; // 百度搜索框-name
element_xpath = "//input[@id='kw']"; // 百度搜索框-xpath
element_cssSelector = ".s_ipt"; // 百度搜索框-cssSelector
element_linkText = "登录"; // 登录链接-linkText
element_className = "s_ipt"; // 百度搜索框-className
element_partialLinkText = "录"; // 登录链接-partialLinkText
element_tagName = "input"; // 百度搜索框-tagName /* 启动 chrome 浏览器 */
webdriver = new ChromeDriver(chromeOptions());
} /**
* 主方法入口
* @author Aaron.ffp
* @version V1.0.0: autoUISelenium main.java.aaron.sele.demo Selenium_LocationDemo.java main, 2015-1-25 22:59:55 Exp $
*
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
/* 启动 chrome */
chromeStart();
/* 打开百度 */
webdriver.get(baseUrl);
/* 等待加载 */
webdriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); /* 通过 ID 查找元素 */
try {
search = webdriver.findElement(By.id(element_id));
search.clear();
search.sendKeys("通过 ID 查找元素");
} catch (NoSuchElementException nsee) {
nsee.printStackTrace();
} TimeUnit.SECONDS.sleep(5); /* 通过 name 查找元素 */
try {
search = webdriver.findElement(By.name(element_name));
search.clear();
search.sendKeys("通过 name 查找元素");
} catch (NoSuchElementException nsee) {
nsee.printStackTrace();
} TimeUnit.SECONDS.sleep(5); /* 通过 xpath 查找元素 */
try {
search = webdriver.findElement(By.xpath(element_xpath));
search.clear();
search.sendKeys("通过 xpath 查找元素");
} catch (NoSuchElementException nsee) {
nsee.printStackTrace();
} TimeUnit.SECONDS.sleep(5); /* 通过 cssSelector 查找元素 */
try {
search = webdriver.findElement(By.cssSelector(element_cssSelector));
search.clear();
search.sendKeys("通过 cssSelector 查找元素");
} catch (NoSuchElementException nsee) {
nsee.printStackTrace();
} catch (InvalidElementStateException iese){
iese.printStackTrace();
} TimeUnit.SECONDS.sleep(5); /* 通过 linkText 查找元素 */
try {
search = webdriver.findElement(By.linkText(element_linkText));
System.out.println(search.getText());;
} catch (NoSuchElementException nsee) {
nsee.printStackTrace();
} TimeUnit.SECONDS.sleep(5); /* 通过 className 查找元素 */
try {
search = webdriver.findElement(By.className(element_className));
search.clear();
search.sendKeys("通过 className 查找元素");
} catch (NoSuchElementException nsee) {
nsee.printStackTrace();
} TimeUnit.SECONDS.sleep(5); /* 通过 partialLinkText 查找元素 */
try {
search = webdriver.findElement(By.partialLinkText(element_partialLinkText));
System.out.println(search.getText());
} catch (NoSuchElementException nsee) {
nsee.printStackTrace();
} TimeUnit.SECONDS.sleep(5); /* 通过 tagName 查找元素
* 此种方法返回的为一个 WebElement 数组,需要根据测试需求进行相应的处理
*/
try {
webdriver.get(baseUrl); List<WebElement> tagName = webdriver.findElements(By.tagName(element_tagName)); for (WebElement webElement : tagName) {
if ("wd".equals(webElement.getAttribute("name"))) {
webElement.sendKeys("通过 tagName 查找元素");
}
}
} catch (NoSuchElementException nsee) {
nsee.printStackTrace();
} catch (Exception e){
e.printStackTrace();
} /* 关闭 chrome */
// chromeQuit();
} /**
* 设置 Chrome 浏览器的启动参数, 设置启动后浏览器窗口最大化, 忽略认证错误警示
*
* @author Aaron.ffp
* @version V1.0.0: autoUISelenium main.java.aaron.sele.demo Selenium_LocationDemo.java chromeOptions, 2015-1-25 23:03:54 Exp $
*
* @search = ChromeOptions Chrome 参数设置
*/
public static ChromeOptions chromeOptions(){
ChromeOptions options = new ChromeOptions();
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--start-maximized"));
/* 浏览器最大化 */
options.addArguments("--test-type", "--start-maximized");
/* 忽略 Chrome 浏览器的认证错误 */
options.addArguments("--test-type", "--ignore-certificate-errors"); return options;
} /**
* 关闭并退出 Chrome
*
* @author Aaron.ffp
* @version V1.0.0: autoUISelenium main.java.aaron.sele.demo Selenium_LocationDemo.java chromeQuit, 2015-1-25 23:04:19 Exp $
*/
public static void chromeQuit(){
/* 关闭 chrome */
webdriver.close();
/* 退出 chrome */
webdriver.quit();
}
}

Selenium 8 种元素定位实战实例源代码(百度首页搜索录入框及登录链接)

至此,WebUI 自动化功能测试脚本第 007 篇-Selenium 8种元素定位实战实例源代码(百度首页搜索录入框及登录链接) 顺利完结,希望此文能够给初学 Selenium 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

Selenium2学习-009-WebUI自动化实战实例-007-Selenium 8种元素定位实战实例源代码(百度首页搜索录入框及登录链接)的更多相关文章

  1. Selenium2学习-001-Selenium2 WebUI自动化Java开发 Windows 环境配置

    此文主要介绍 Selenium2 WebUI自动化Java开发 Windows 环境配置,供各位亲们参考,若有不足之处,敬请各位大神指正,非常感谢! 所需软件列表如下所示: 所属分类 具体名称 备注 ...

  2. 【python+selenium的web自动化】- 8种元素定位方式详解

    ​ 我们在做WEB自动化时,最根本的就是操作页面上的各种元素,而操作的基础便是元素的定位,只有准确地定位到唯一元素才能进行后续的自动化控制,下面将对各种元素定位方式进行总结归纳. ​ 说明:以下操作统 ...

  3. Selenium2+python自动化-八种元素定位(Firebug和Firepath)

    前言    自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇主要讲如何用firefox辅助工具进行元素定位.元素定位在这四个环节中 ...

  4. web自动化:selenium原理和元素定位(一)

    一. Selenium2 WebDriver 当Selenium2.x提出了WebDriver的概念后,它提供了完全另外的一种方式与浏览器交互 那就是利用浏览器原生的API,封装成一套更加面向对象的S ...

  5. Robot framework之元素定位实战

    1.1  id 和name 定位 Web页面都是由许多标签和元素组成的,每个标签或元素都是很多属性,好比一个人   id 和name 可以看作一个人的身份证号和姓名.下面看下教育局招生系统的用户名输入 ...

  6. UI自动化(selenium+python)之元素定位的三种等待方式

    前言 在UI自动化过程中,常遇到元素未找到,代码报错的情况.这种情况下,需要用等待wait. 在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverW ...

  7. Selenium2学习-004-WebUI自动化实战实例-002-百度登录

    此文主要通过 百度登录 功能,进行 Selenium2 的实战实例讲解.文中所附源代码于 2015-01-17 23:33 亲测通过,敬请亲们阅览.同时,您也可参考此文进行其他网站(例如 京东.易迅. ...

  8. Selenium2学习-003-WebUI自动化实战实例-001-百度搜索

    此文主要通过百度搜索功能,进行 Selenium2 的实战实例讲解,文中所附源代码于 2015-01-16 02:01 亲测通过,敬请亲们阅览.希望能对初学 Selenium2 UI 自动化测试编程的 ...

  9. Selenium2学习-012-WebUI自动化实战实例-010-解决元素失效:StaleElementReferenceException: stale element reference: element is not attached to the page document

    元素失效的想象提示信息如下图所示,此种问题通常是因为元素页面刷新之后,为重新获取元素导致的. 解决此类问题比较简单,只需要在页面刷新之后,重新获取一下元素,就可以消除此种错误了. 以下以易迅网搜索为例 ...

随机推荐

  1. 【POJ】3150 Cellular Automaton(矩阵乘法+特殊的技巧)

    http://poj.org/problem?id=3150 这题裸的矩阵很容易看出,假设d=1,n=5那么矩阵是这样的 1 1 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 ...

  2. FreeMarker教程

    一.什么是模板引擎,为什么要用模板引擎 在B/S程式设计中,常常有美工和程序员二个角色,他们具有不同专业技能:美工专注于表现——创建页面.风格.布局.效果等等可视元素:而程序员则忙于创建程式的商业流程 ...

  3. Highcharts 本地导出图片 Java

    下载的Highcharts-2.3.5.zip 解压后 有 E:\Highcharts\Highcharts-2.3.5\exporting-server\java 目录 提供了Java实现的导出应用 ...

  4. 用Git进行协同开发

    用Git进行协同开发 问题场景描述 常常会遇到这样的协同场景:后台的同事和前端的同事需要共同开发一个新功能,而他们的代码相互依赖,所以需要不停地更新各自的代码进行联调. 对于这种场景,最简单的方式就是 ...

  5. DevOps 高效 shell 命令

    1.查看指定进程的top信息 大家都知道用top来查看系统实时指标,在 Linux 服务器上,如果想查看特定进程的top实时信息(以 node 进程为例),可以使用这样的命令: top -p `pgr ...

  6. WampServer搭建php环境时出现的哪些问题?

    WampServer搭建php环境时遇到的问题 安装时报错,缺少MSVCR100.dll文件 这是因为wampServer安装时用到的vc库没有更新,要安装更新之后再进行安装,因为之前安装的VC版本低 ...

  7. HTML&CSS----练习隐藏导航栏(初级)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. fail2ban 保护

    Fail2ban是一款非常使用的软件,它能够监控系统日志,能够有效的防止ssh被暴力破解,下面小编将针对Fail2ban在Linux下的安装和使用给大家做个介绍,一起来了解下吧. https://gi ...

  9. DS实验题 word

    题目: 代码: // // main.cpp // word // // Created by wasdns on 16/11/11. // Copyright © 2016年 wasdns. All ...

  10. ThinkPHP 3.2.2 视图模板中使用字符串截取函数

    在项目的 Common/function.php 文件里( 项目结构如图 ) 添加函数: /*字符串截断函数+省略号*/ function subtext($text, $length) { if(m ...