16.操作单选框

被测试的网页为Demo1。

Java语言版本的API实例代码:

public static void operateRadio(){
driver.get("file:///D:/%E6%95%99%E5%AD%A6/2015-2016-2/%E8%AF%BE%E4%BB%B6/w9/SeleniumDemo/files/Demo1/demo.html");
driver.manage().window().maximize(); WebElement radioOption=driver.findElement(By.xpath("//input[@value='Volvo']"));
if(!radioOption.isSelected())
radioOption.click();
sleep(); List<WebElement> cars=driver.findElements(By.name("identity"));
for(WebElement car:cars)
if(car.getAttribute("value").equals("Audi")){
if(!car.isSelected())
car.click();
break;
}
}

17.操作复选框

被测试的网页为Demo1。

Java语言版本的API实例代码:

public static void operateCheckBox(){
driver.get("file:///D:/%E6%95%99%E5%AD%A6/2015-2016-2/%E8%AF%BE%E4%BB%B6/w9/SeleniumDemo/files/Demo1/demo.html");
driver.manage().window().maximize();
sleep(); WebElement element=driver.findElement(By.xpath(".//*[@id='checkbox']/input[3]"));
if(!element.isSelected())
element.click();
sleep();
if(element.isSelected())
element.click();
sleep();
System.out.println("end1"); List<WebElement> checkboxs=driver.findElements(By.xpath(".//*[@id='checkbox']/input"));
for(WebElement checkbox:checkboxs)
checkbox.click();
System.out.println("end2");
}

18.杀掉Windows的浏览器进程

测试前准备条件:

(1)打开一个Firefox浏览器

(2)打开一个IE浏览器

(3)打开一个Chrome浏览器

Java语言版本的API实例代码:

public static void operateWindowsProcess(){
WindowsUtils.KillByName("firefox.exe");
sleep();
WindowsUtils.KillByName("iexplore.exe");
sleep();
WindowsUtils.KillByName("chrome.exe");
sleep();
}

19.将当前浏览器的窗口截屏

public static void captureScreenInCurrentWindow(){
driver.get("http://www.sogou.com");
File scrFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try{
FileUtils.copyFile(scrFile, new File("d:\\test.png"));
}catch(IOException e){
e.printStackTrace();
}
}

20.执行JavaScript脚本

被测试的网页为http://www.sogou.com。

Java语言版本的API实例代码:

public static void executeJavaScript(){
driver.get("http://www.sogou.com");
//声明一个JavaScript执行器对象
JavascriptExecutor js=(JavascriptExecutor)driver;
//调用执行器对象的executeScript方法来执行JavaScript脚本返回当前浏览器窗口的 Title值
String title=(String)js.executeScript("return document.title");
System.out.println(title);
}

21.拖拽页面元素

被测试网页的网址:http://jqueryui.com/resources/demos/draggable/scroll.html

此页面的3个方框元素可以被拖动。

Java语言版本的API实例代码:

public static void dragPageElement(){
driver.get("http://jqueryui.com/resources/demos/draggable/scroll.html");
WebElement draggable=driver.findElement(By.id("draggable")); //向下拖动10个像素,共拖动5次
for(int i=;i<;i++){
//10表示元素的纵坐标向下移动10个像素,0表示元素的横坐标不变
new Actions(driver).dragAndDropBy(draggable, , ).build().perform();
}
sleep(); //向右拖动10个像素,共拖动5次
for(int i=;i<;i++){
new Actions(driver).dragAndDropBy(draggable, , ).build().perform();
}
}

22.模拟键盘的操作

被测试网页的网址:http://www.sogou.com。

Java语言版本的API实例代码:

public static void clickKeys(){
driver.get("http://www.sogou.com/");
WebElement element=driver.findElement(By.id("query"));
element.click();
Actions action=new Actions(driver);
action.keyDown(Keys.CONTROL); //按下Ctrl键
action.keyDown(Keys.SHIFT);
action.keyDown(Keys.ALT);
action.keyDown(Keys.CONTROL); //按下Ctrl键
action.keyDown(Keys.SHIFT);
action.keyDown(Keys.ALT);
action.keyDown(Keys.SHIFT).sendKeys("abcdefg").perform();
}

23.模拟鼠标右键事件

public static void rightClickMOuse(){
driver.get("http://www.sogou.com/");
Actions action=new Actions(driver);
action.contextClick(driver.findElement(By.id("query"))).perform();
}

24.在指定元素上方进行鼠标悬浮

public static void roverOnElement(){
driver.get("file:///D:/%E6%95%99%E5%AD%A6/2015-2016-2/%E8%AF%BE%E4%BB%B6/w9/SeleniumDemo/files/Demo1/demo.html");
driver.manage().window().maximize();
sleep(); WebElement element=driver.findElement(By.xpath(".//*[@id='action']/input"));
Actions action=new Actions(driver);
action.moveToElement(element).perform();
}

25.在指定元素上进行鼠标单击左键和释放的操作

  action.clickAndHold(element).perform();

   action.release(element).perform();

26.查看页面元素的属性

  element.getAttribute("value");

27.获取页面元素的CSS属性值

  element.getCssValue("width");

28.隐式等待

  driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

另外一种,笨方法等待,使当前线程进入等待,Thread.sleep();这种等待属于死等,很容易让线程挂掉,使程序抛异常,所以要慎用此方法。

29.常用的显式等待

  显式等待比隐式等待更节约测试脚本执行的时间,推荐尽量使用显式等待方式来判断页面元素是否存在。使用ExpectedConditions类中自带的方法,可以进行显式等待的判断。显式等待可以自定义等待的条件,用于更加复杂的页面元素状态判断。常用的显式等待条件如下表所示。

等待的条件 WebDriver方法
页面元素是否在页面上可用和可被单击 elementToBeClickable(By locator)
页面元素处于被选中状态 elementToBeSelected(WebElement element)
页面元素在页面中存在 presenceOfElementLocated(By locator)
在页面元素中是否包含特定的文本 textToBePresentInElement(By locator)
页面元素值 textToBePresentInElementValue(By locator, java.lang.String text)
标题 titleContains(java.lang.String title)

  只有满足显式等待的条件要求,测试代码才会继续向后执行后续的测试逻辑。如果超过设定的最大显式等待时间阈值,则测试程序会抛出异常,测试用例被认为执行失败。

public static void testExplictWait1(){
driver.get("http://www.baidu.com");
driver.manage().window().maximize();
sleep(); WebElement element=driver.findElement(By.id("kw"));
element.sendKeys("elon musk");
element=driver.findElement(By.id("su"));
element.click(); //声明一个WebDriverWait对象,设定触发条件的最长等待时间为10秒
WebDriverWait wait=new WebDriverWait(driver,);
wait.until(ExpectedConditions.titleContains("elon"));
System.out.println("end");
}

30.自定义的显式等待

public static void testExplictWait2()
{
driver.get("file:///D:/%E6%95%99%E5%AD%A6/2015-2016-2/%E8%AF%BE%E4%BB%B6/w9/SeleniumDemo/files/Demo1/demo.html");
driver.manage().window().maximize();
sleep(); WebElement element=driver.findElement(By.className("wait"));
element.click();
WebElement redDiv=(new WebDriverWait(driver,))
.until(new ExpectedCondition<WebElement>(){
public WebElement apply(WebDriver d){
return d.findElement(By.className("red"));
}
});
System.out.println(redDiv.getText());
}

5.6 WebDriver API实例讲解(16-30)的更多相关文章

  1. 5.7 WebDriver API实例讲解

    本节主要详细描述WebDriver的常用API使用方法. 1.访问某网页地址 被测试网页的网址:http://www.sogou.com. Java语言版本的API实例代码: 方法1: public ...

  2. 5.6 WebDriver API实例讲解(31-35)

    31.判断页面元素是否存在 public static void testElementExist(){ driver.get("http://www.sogou.com"); t ...

  3. 5.6 WebDriver API实例讲解(31-40)

    31.判断页面元素是否存在 public static void testElementExist(){ driver.get("http://www.sogou.com"); t ...

  4. 5.6 WebDriver API实例讲解(41-50)

    41.操作Web页面的滚动条 (1)滑动页面的滚动条到页面的最下面. (2)滑动页面的滚动条到页面的某个元素. (3)滑动页面的滚动条向下移动某个数量的像素. package apiSample; i ...

  5. WebDriver API 实例详解(四)

    三十一.使用页面的文字内容识别和处理新弹出的浏览器窗口 被测试网页的HTML源码: <html> <head> <meta charset="UTF-8&quo ...

  6. WebDriver API 实例详解(三)

    二十一.模拟鼠标右键事件 被测试网页的网址: http://www.sogou.com Java语言版本的API实例代码: package test; import org.testng.annota ...

  7. WebDriver API 实例详解(二)

    十一.双击某个元素 被测试网页的html源码: <html> <head> <meta charset="UTF-8"> </head&g ...

  8. WebDriver API 实例详解(一)

    一.访问某网页地址 被测试网页的网址: http://www.baidu.com Java语言版本的API实例代码: 方法1: package test; import org.testng.anno ...

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

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

随机推荐

  1. 复旦大学2014--2015学年第一学期(14级)高等代数I期末考试第七大题解答

    七.(本题10分)  设 \(V\) 为数域 \(\mathbb{K}\) 上的 \(n\) 维线性空间, \(S=\{v_1,v_2,\cdots,v_m\}\) 为 \(V\) 中的向量组, 定义 ...

  2. 用于JDBC操作数据库的公共类

    /* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...

  3. .Net验证码实现基础--Draw

    命名空间 using System.Draw; using System.Draw.Drawing2D; 在form等控件的 事件中 添加 paint事件 ///////画各种形状(空心)////// ...

  4. Python import 指定目录中的模块

    #coding=utf-8 import os,sys sys.path.append('test') # 下级目录(text) parentdir = os.path.dirname(os.path ...

  5. Cheatsheet: 2015 03.01 ~ 03.31

    Web The Architecture of Algolia's Distributed Search Network No promises: asynchronous JavaScript wi ...

  6. 【转载】Ogre的内存分配策略

    原文:Ogre的内存分配策略 读这个之前,强烈建议看一下Alexandrescu的modern c++的第一章关于policy技术的解释.应该是这哥们发明的,这里只是使用. 首先列出涉及到的头文件:( ...

  7. Task<TResult>的使用

    https://msdn.microsoft.com/en-us/library/dd321424(v=vs.110).aspx Represents an asynchronous operatio ...

  8. 梯度下降法VS随机梯度下降法 (Python的实现)

    # -*- coding: cp936 -*- import numpy as np from scipy import stats import matplotlib.pyplot as plt # ...

  9. Python命令行解析argparse常用语法使用简介

    查看原文:http://www.sijitao.net/2000.html python中的命令行解析最简单最原始的方法是使用sys.argv来实现,更高级的可以使用argparse这个模块.argp ...

  10. ubuntu下解压zip文件乱码

    安装unar 即可解决问题 sudo apt get install unar