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. 【leetcode❤python】26. Remove Duplicates from Sorted Array

    #-*- coding: UTF-8 -*-class Solution(object):    def removeDuplicates(self, nums):        "&quo ...

  2. Shell脚本中的交互式命令处理

    先贴代码: DATE=`date -d -1hour +%T` fileName=erver_`date -d now +%Y-%m-%d-%H%M%S`.txt cp /home/BLload_ba ...

  3. SQL设置语言,返回中文”星期几”格式

    SQL中语言表: SELECT * FROM sys.syslanguages   eg: SET LANGUAGE 简体中文 --设置语言 PRINT DATENAME(weekday,GETDAT ...

  4. Logical Address->Linear Address->Physical Address

    3 registers for starting pos: LDTR, GDTR( register for starting addr of DT) ---段描述符每个段由一个8字节(64位)的段描 ...

  5. SqlServer 存储过程分页

    适用于2005以上版本 create procedure [dbo].[SP_GetPageList] ( @columns nvarchar(max), --查询字段 @tablename nvar ...

  6. 读Effective Java笔记之one:static Factory methods instead of Constructors (静态工厂方与构造器)

    获取类的实例的方法有很多种,在这很多种方法中,它们各有优缺,各有特点.这里,只介绍2中方法 1.使用构造方法 public class Person { private String sex; /** ...

  7. WPF基础学习第二天(高级控件)

    1.Menu菜单控件 Exp1: Code: <Window x:Class="菜单Menu.MainWindow" xmlns="http://schemas.m ...

  8. mouseover和mouseenter的区别

    mouseover和mouseenter都是鼠标事件. mouseover事件,当鼠标穿过被选元素的时候,若此元素有子元素,子元素也会被触发此事件.即是使用mouseover事件,会多次触发此元素. ...

  9. Spring的DI(Ioc) - 注入bean 和 基本数据类型

    注入bean有两种方式: 注入其他bean: 方式一 <bean id="orderDao" class="cn.itcast.service.OrderDaoBe ...

  10. iOS - OC NSProcessInfo 系统进程信息

    前言 @interface NSProcessInfo : NSObject NSProcessInfo 类中包含一些方法,允许你设置或检索正在运行的应用程序(即进程)的各种类型的信息. 1.获取系统 ...