4.8  定位一组元素

定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数。定位一组元素一般用于以下场景:

·批量操作元素,例如勾选页面上所有的复选框。

·先获取一组元素,再从这组对象中过滤出需要操作的元素。例如定位出页面上所有的checkbox,然后选择其中的一个进行操作。

eg:

编写一个html页面。

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title>checkbox</title>
<link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.main.css" rel="stylesheet"/>
<script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.main.js"></script>
<style>
.well{
width:200px;
height:300px;
margin:40 auto;
border:1px solid red;
}
.control-group{
margin-top:30px;
}
.controls{
margin-left:100px;
margin-top:-15px;
}
</style> </head>
<body> <div class="well">
<h3>checkbox</h3>
<form class="form-horizontal">
<div class="control-group">
<label class="control-label" for="c1">checkbox1</label>
<div class="controls">
<input type="checkbox" id="c1"/>
</div>
</div> <div class="control-group">
<label class="control-label" for="c2">checkbox1</label>
<div class="controls">
<input type="checkbox" id="c2"/>
</div>
</div> <div class="control-group">
<label class="control-label" for="c3">checkbox1</label>
<div class="controls">
<input type="checkbox" id="c3"/>
</div>
</div>
</form>
</div>
</body>
</html>

java代码;

package com.cy.selenium;

import java.io.File;
import java.util.List; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver; public class Test03 {
public static void main(String[] args) throws InterruptedException {
System.out.println("start");
WebDriver driver = new FirefoxDriver();
File file = new File("C:/Users/Administrator/Desktop/test.html");
String filePath = file.getAbsolutePath();
driver.get(filePath);
// 通过css查找一组元素
List<WebElement> inputs = driver.findElements(By.cssSelector("input[type=checkbox]"));
for (WebElement checkbox : inputs) {
checkbox.click();
}
Thread.sleep(3000);
// 刷新
driver.navigate().refresh(); // 选择最后一个checkbox 通过xpath查找一组元素
List<WebElement> checkboxs = driver.findElements(By.xpath(".//input[@type='checkbox']"));
checkboxs.get(checkboxs.size()-1).click();
Thread.sleep(2000);
driver.close(); }
}

效果:

4.9  多表单切换

<html>
<head>
</head>
<body>
<div class="row_fluid">
<div class="span10 well">
<h3>frame</h3>
<iframe id="if" name="nf" src="http://www.baidu.com" width="1200px" height="300px"></iframe>
</div>
</div>
</body>
</html>

java代码:

package com.cy.selenium;

import java.io.File;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver; public class Iframe { public static void main(String[] args) throws InterruptedException {
System.out.println("start");
WebDriver driver = new FirefoxDriver();
File file = new File("C:/Users/Administrator/Desktop/frame.html");
String filePath = file.getAbsolutePath();
driver.get(filePath); // 切换到iframe (id="if")
driver.switchTo().frame("if");
driver.findElement(By.id("kw")).sendKeys("webDrive");
driver.findElement(By.id("su")).click();
Thread.sleep(4000);
driver.close();
//退回上一级表单
// driver.switchTo().defaultContent(); } }

4.10  多窗口切换

4.11  警告框处理

在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用 switch_to_alert()方法定位到 alert/confirm/prompt,然后使用text/accept/dismiss/ sendKeys等方法进行操作。

·getText():返回 alert/confirm/prompt 中的文字信息。

·accept(): 接受现有警告框。
·dismiss():解散现有警告框。
·sendKeys(keysToSend):    发送文本至警告框。keysToSend:将文本发送至警告框。

eg:

package com.cy.selenium;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions; public class Alert {
public static void main(String[] args) throws InterruptedException {
System.out.println("start selenium");
WebDriver driver=new FirefoxDriver();// 用WebDriver new Firefox浏览器的驱动给变量driver,相当于driver拿到了Firefox浏览器的控制权。
driver.get("http://www.baidu.com/");
Actions action=new Actions(driver);
// 悬停在设置上
action.clickAndHold(driver.findElement(By.linkText("设置"))).perform();
// 打开搜索设置
driver.findElement(By.className("setpref")).click();
Thread.sleep(3000);
//保存设置
driver.findElement(By.className("prefpanelgo")).click();
Thread.sleep(2000);
// 接受弹框
driver.switchTo().alert().accept(); Thread.sleep(2000); driver.close(); }
}

第4章 Selenium2-java WebDriver API (二)的更多相关文章

  1. python+selenium自动化软件测试(第2章):WebDriver API

    2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...

  2. selenium2.0(WebDriver) API

    1.1  下载selenium2.0的包 官方download包地址:http://code.google.com/p/selenium/downloads/list 官方User Guide:  h ...

  3. 《Java从入门到失业》第二章:Java环境(二):JDK、JRE、JVM

    2.2JDK.JRE.JVM 在JDK的安装目录中,我们发现有一个目录jre(其实如果是下一步下一步安装的,在和JDK安装目录同级目录下,还会有一个jre目录).初学Java的同学,有时候搞不清楚这3 ...

  4. Webdriver API (二)

    (转载) 1.3 打开测试页面 对页面对测试,首先要打开被测试页面的地址(如:http://www.google.com),web driver 提供的get方法可以打开一个页面: // And no ...

  5. selenium2(WebDriver) API

    selenium2(WebDriver) API 作者:Glen.He出处:http://www.cnblogs.com/puresoul/  1.1  下载selenium2.0的包 官方downl ...

  6. Selenium2+Python:Webdriver API速记手册

    由于web自动化常常需要控制浏览器行为和操作页面元素,相关函数又比较多,于是再此记下一份Webdriver API查阅文档以备不时之需. 参考:虫师<Selenium2自动化测试实战>,和 ...

  7. java JDK8 学习笔记——第11章 线程和并行API

    第11章 线程与并行API 11.1 线程 11.1.1 线程 在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run( ...

  8. [selenium webdriver Java]常用api

    1. 获取元素文本 WebElement类的getText()方法返回元素的innerText属性.所以元素里如果有子节点一样也会被返回出来.如下所示 public class GetText { @ ...

  9. java基础(二章)

    java基础(二章) 一,变量 1.变量是内存中的一个标识符号,用于存储数据 2.变量命名规则 l  必须以字母.下划线 _ .美元符号 $ 开头 l  变量中,可以包括数字 l  变量中,不能出现特 ...

随机推荐

  1. Solr定时导入功能实现

    需要实现Solr定时导入功能的话,我们可以通过使用Solr自身所集成的dataimportscheduler调度器实现 下载对应的jar包,下载地址https://code.google.com/ar ...

  2. 第二次spring会议

    今天所做之事: 我用C#用DelectText对行数进行了定义,刚开始写代码有点无从下手. 遇到的问题:刚开始用datagridView进行了文本的输入,但是它更适合EXCEL之类的数据计算不符合我们 ...

  3. # 2019-2020-3 《Java 程序设计》第三周总结

    2019-2020-3 <Java 程序设计>第三周知识总结 1.类的定义 语法格式如下(加[]表示可选项): [修饰符] class 类名 { 属性定义(声明) 方法定义(声明)} 2. ...

  4. SGTtrick

    SGTtrick By 蒟蒻 ldxoiBy\ 蒟蒻\ ldxoiBy 蒟蒻 ldxoi Chapter 1.关于线段树操作的一些分析 我们知道,线段树有两个核心的函数pushdownpushdown ...

  5. ota升级动画修改

    在网上可以搜到很多相关的文章,但是很多文章都是复制粘贴而来的,为了方便后面工作学习,本文会把其中最关键的几个步骤列出来. 首先根据ota升级界面的文字可以确认相关的图片资源的目录在哪里,可以网上搜一下 ...

  6. GIS中空间数据和非空间数据

  7. _ZNote_Qt_Tips_添加动态链接库

    之前添加都是 手写添加,今天陈老师提示可以在 .pro 文件内空白处,右键弹出添加

  8. HTML <frameset>

    好久不用 <frameset>确实有点手生了,直接上代码看效果吧,简单易懂 <!DOCTYPE html> <html> <head> <meta ...

  9. js-运动函数(盒子运动)

    注意move的js包在另一篇文章 <!DOCTYPE html><html> <head> <meta charset="UTF-8"&g ...

  10. linux 修改用户密码的几种方法

    1.passwd 命令,手动修改: [root@localhost testuser]# passwd testuser Changing password for user testuser. Ne ...