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. VFL +AutoLayout

    横竖屏事件响应(viewWillLayoutSubviews和通知)两种方式 http://blog.csdn.net/nogodoss/article/details/17246489 一,NSLa ...

  2. C#借助谷歌翻译实现翻译小工具(二)添加托盘图标

    接上一节完善小翻译工具 设置Form的ShowInTaskbar属性为False,取消任务栏显示 设置Form的MaximizeBox属性为False,取消最大化显示 窗口添加两个控件 分别是:Con ...

  3. 蒙特卡洛法计算定积分—Importance Sampling

    如上图所示,计算区间[a  b]上f(x)的积分即求曲线与X轴围成红色区域的面积.下面使用蒙特卡洛法计算区间[2  3]上的定积分:∫(x2+4*x*sin(x))dx # -*- coding: u ...

  4. Upgrade Bioconductor

    (1)Checking Version of Bioconductor > source("http://bioconductor.org/biocLite.R")Bioco ...

  5. Java编译环境的搭建(eclipse)

    每用一种语言开发,要搭建其编译和开发环境,我们废话不说,立刻来看看Java开发环境的搭建. 1.安装JDK和JRE Windows环境下: a.去Oracle官网下载对应版本的JDK安装包,http: ...

  6. python_way ,day22 tonardo

    python_way day22 1.tonardo 2.cookie 3.api认证 一.tonardo: a.tonardo 初识 #!/usr/bin/env python3# Created ...

  7. RelativeLayout用到的一些重要的属性:

    下面是常用的一些属性 RelativeLayout用到的一些重要的属性: 第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中android:la ...

  8. Android_使用 OpenVPN

    1. 需要 root http://www.doc88.com/p-847633362717.html http://bbs.gfan.com/android-3679297-1-1.html 需要 ...

  9. [转载] 理解RESTful架构

    原文: http://www.ruanyifeng.com/blog/2011/09/restful.html 理解RESTful架构   作者: 阮一峰 日期: 2011年9月12日 越来越多的人开 ...

  10. Generator 函数的含义与用法

    Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行). function* gen(x){ var y = yield x + 2; return y; } ...