WebDriverAPI(7)
查看页面元素的属性
测试网址
http://www.baidu.com
Java语言版本API实例
@Test
public void getWebElementAttribute() {
driver.manage().window().maximize();
driver.navigate().to(url);
String inptString = "seleium测试内容";
WebElement input = driver.findElement(By.id("kw"));
input.sendKeys(inptString);
//取输入框中的值
String inputText = input.getAttribute("value");
Assert.assertEquals(inputText, "seleium测试内容");
}
获取页面元素的Css值
测试网址
http://www.baidu.com
Java语言版本API实例
@Test
public void getElenmentCssValue() {
driver.manage().window().maximize();
driver.get(url);
WebElement input = driver.findElement(By.id("kw"));
//获取元素宽度
String inputwidth = input.getCssValue("width");
//断言判断
Assert.assertEquals("500px", inputwidth);
}
隐式等待
测试网址
http://www.baidu.com
Java语言版本API实例
@Test
public void testImplictWait() {
driver.manage().window().maximize();
driver.navigate().to(url);
/*使用implicitlyWait方法设定查找页面元素的等待时间,调用findElement方法时没有立刻找到
* 定位元素会等待设定的等待时长10秒,如果还没找到则抛出NoSuchElementException
* */
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
try {
WebElement seartchInputBox = driver.findElement(By.id("kw"));
WebElement seartchButton = driver.findElement(By.id("su"));
seartchInputBox.sendKeys("找到搜索框元素");
seartchButton.click();
} catch (NoSuchElementException e) {
Assert.fail("没有找到搜索框");
e.printStackTrace();
}
}
显示等待
等待条件 | WebDriver方法 |
页面元素是否在在页面上可用(enabled)和可被单击 | elementToBeClickable(By locator) |
页面元素处于被选中状态 | elementToBeSelected(WebElement element) |
页面元素在页面中存在 | presenceOfElementLocated(By locator) |
在页面元素中是否包含特定的文本 | textToBePresentInElement(By locator) |
页面元素值 | textToBePresentInElementValue(By locator,java.lang.String text) |
标题(title) | titleContains(java.lang.String title) |
测试HTML代码
<html>
<title>你喜欢的水果</title>
<body>
<p>请选择你爱吃的水果</p>
<br>
<select name='fruit'>
<option id='peach' value='taozi'>桃子</option>
<option id='watermelon' value='xigua'>西瓜</option>
</select>
<br>
<input type='checkbox'>是否喜欢吃水果?</input>
<br><br>
<input type="text" id="text" value="今年夏天西瓜相当甜">文本框</input>
</body>
</html>
Java语言版本API实例
@Test
public void testExplicitWait() {
driver.manage().window().maximize();
driver.get(url);
//声明一个WebDriverWait对象,设定触发条件的最长等待时间为10秒
WebDriverWait wait = new WebDriverWait(driver,10);
//调用ExpectedConditions的titleContains方法判断标题中是否包含水果两字
wait.until(ExpectedConditions.titleContains("水果"));
System.out.println("网页标题出现了“水果的关键字”");
//获取桃子选项对象
WebElement select = driver.findElement(By.xpath("//option[@id='peach']"));
//调用ExpectedConditions的elementToBeSelected方法判断桃子是否处于选中状态
wait.until(ExpectedConditions.elementToBeSelected(select));
System.out.println("下拉列表框“桃子属于选中状态”");
//调用ExpectedConditions的elementToBeClickable方法判断复选框是否处于可见及是否可被单击
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@type='checkbox']")));
System.out.println("页面复选框处于显示和可被单击状态");
//调用ExpectedConditions的presenceOfElementLocated方法判断p是否存在页面中
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//p")));
System.out.println("页面的p元素标签已显示");
//获取页面p标签元素
WebElement p = driver.findElement(By.xpath("//p"));
//调用ExpectedConditions的textToBePresentInElement方法判断p标签中是否包含爱吃的水果这几个字
wait.until(ExpectedConditions.textToBePresentInElement(p, "爱吃的水果"));
System.out.println("页面p标签元素包含爱吃的水果");
}
自定义的显示等待
被测试HTML代码
同上一个
Java语言版本API实例
@Test
public void testExplicitWait() {
driver.manage().window().maximize();
driver.navigate().to(url);
try {
//显示等待判断是否可以从页面获取文字输入框对象,如果可以获取则执行后面测试用例
WebElement textInputBox = (new WebDriverWait(driver,10)).until(new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver d){
return d.findElement(By.xpath("//*[@type='text']"));
}
});
//断言判断输入框中是否包含这几个字
Assert.assertEquals("今年夏天西瓜相当甜!", textInputBox.getAttribute("value"));
//显示等待判断p标签中是否包含爱吃两个字,若包含则继续执行后面的测试同理
Boolean containTextFlag = (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver d){
return d.findElement(By.xpath("//p")).getText().contains("爱吃");
}
});
//断言判断是否包含爱吃关键字
Assert.assertTrue(containTextFlag);
//显示等待判断文本框是否可见,若可见继续执行后面的测试用例
Boolean inputTextVisibleFlag = (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver d){
return d.findElement(By.xpath("//*[@type='text']")).isDisplayed();
}
});
//断言判断文本框是否可见
Assert.assertTrue(inputTextVisibleFlag);
} catch (NoSuchElementException e) {
//若显示等待条件未被满足则执行
Assert.fail("页面上的输入框元素未未找到!");
e.printStackTrace();
}
}
WebDriverAPI(7)的更多相关文章
- WebDriverAPI(10)
操作Frame页面元素 测试网址代码 frameset.html: <html> <head> <title>frameset页面</title> &l ...
- WebDriverAPI(9)
操作JavaScript的Alert窗口 测试网址代码 <html> <head> <title>你喜欢的水果</title> </head> ...
- WebDriverAPI(4)
单击某个元素 采用元素id.click()方法即可 双击某个元素id.doubleClick 操作单选下拉列表 测试网页HTML代码 <html> <body> <sel ...
- WebDriverAPI(2)
操作浏览器窗口 被测网址http:http://www.baidu.com Java语言版本的API实例代码 String url = "http://www.baidu.com" ...
- WebDriverAPI(8)
判断页面元素是否存在 测试网址 http://www.baidu.com Java语言版本API实例 @Test public void testIsElementPresent(){ driver. ...
- WebDriverAPI(6)
在指定元素上方进行鼠标悬浮 测试网址 http://www.baidu.com Java语言版本实例 @Test public void roverOnElement() { driver.manag ...
- WebDriverAPI(5)
将当前浏览器截屏 测试网址 http://www.baidu.com Java语言版本实例 @Test public void captureScreenInCurrentWindows() { dr ...
- WebDriverAPI(3)
获取页面的Title属性 被测网址http:http://www.baidu.com Java语言版本的API实例代码 String url = "http://www.baidu.com& ...
- WebDriverAPI(1)
访问某网页地址 被测网址http:http://www.baidu.com Java语言版本的API实例代码 方法一: @Test public void visitURL(){ String bas ...
随机推荐
- ubuntu14.04 Samba服务无法访问 可能没有权限 指定的网络名不再可用的问题
按常规配置后,在windows资源管理器中登陆samba服务器,看得到分享目录却无法打开,弹出"无法访问.您可能没有权限使用网络资源,请与这台服务器的管理员联系以查明您是否有访问权限.指定的 ...
- csdn的一次回答问题
#coding:utf8 import tushare as ts import pandas as pd import numpy as np import pymysql,datetime imp ...
- HDU 1503 Advanced Fruits (LCS+DP+递归)
题意:给定两个字符串,让你求一个最短的字符串,并且这个字符串包含给定的两个. 析:看到这个题,我知道是DP,但是,不会啊...完全没有思路么,我就是个DP渣渣,一直不会做DP. 最后还是参考了一下题解 ...
- HDU 1864 最大报销额 (DP-01背包问题)
题意:中文题,你懂得. 析:拿过题目一看,本来以为是贪心,仔细一看不是贪心,其实是一个简单的01背包问题(DP),不过这个题的坑是在处理发票上,刚开始WA了一次. 分析一下什么样的发票是不符合要求的: ...
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
本文分步介绍了多种从 Microsoft Visual C# 2005 或 Microsoft Visual C# .NET 程序向 Microsoft Excel 2002 传输数据的方法.本文还提 ...
- Android线程和线程Handler基础一览
线程概览 线程是任何多任务系统的基石.可以被认为是一个主进程的多个子进程.这样做的目的就是了增加应用的性能. 应用主线程 当一个Android应用被打开的时候,系统会默认开辟一个线程.这个线程就被叫做 ...
- 数据分析工具R和RStudio入门介绍
https://www.cnblogs.com/yjd_hycf_space/p/6672995.html Python&R语言-python和r相遇:https://www.cnblogs. ...
- Android类装载器DexClassLoader的简单使用-----制作android插件的前奏
声明:此篇文章借鉴<android内核剖析>整理得来. 一.装载器简介 “类装载器”(ClassLoader),顾名思义,就是用来动态装载class文件的.标准的Java SDK中有个Cl ...
- n&&m and n||m 的区别
今天写一道题老是WA最后才发现问题出在了这个地方, 题目说的是当输入的n和m 都为0的时候,结束输入. 于是乎,条件我就写成了while(n&&m),其实这句话的意思是:只有m和n都不 ...
- java分层
一.为什么要分层. 以前的我们,写代码的时候,都在main()方法中,出现了错误,就慢慢调试,这样浪费了我们很长的时间,而我们程序员的时间是非常宝贵的 但是当我们使用分层架构的时候,就可以清晰明确的知 ...