WebDriver高级应用实例(1)
1.1使用JavaScriptExecutor单击元素
被测网页的网址:
http://www.baidu.com
Java语言版本的API实例代码
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod; public class TestDemo {
WebDriver driver;
String url = "http://www.baidu.com";
@Test
public void testHandleiFrame() throws Exception {
WebElement searchInputBox = driver.findElement(By.id("kw"));
WebElement searchButton = driver.findElement(By.id("su"));
searchInputBox.sendKeys("使用JavaScript语句进行页面元素单击");
JavaScriptClick(searchButton);
}
public void JavaScriptClick(WebElement element)throws Exception {
try {
//判断传入的参数是否处于页面上及是否可单击
if(element.isEnabled() && element.isDisplayed()){
System.out.println("使用JavaScript语句进行页面元素单击");
((JavascriptExecutor)driver).executeScript("arguments[0].click();", element); }else{
System.out.println("页面上的元素无法进行单击操作");
}
} catch (StaleElementReferenceException e) {
System.out.println("页面元素没有附加在网页中"+e.getStackTrace());
}catch(NoSuchElementException e){
System.out.println("在页面中没有找到要操作的页面元素"+e.getStackTrace());
}catch(Exception e){
System.out.println("无法完成单击动作"+e.getStackTrace());
} }
@BeforeMethod
public void beforeMethod() {
System.setProperty("webdriver.chrome.driver", "D:\\WebDriver\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get(url);
} @AfterMethod
public void afterMethod() {
driver.quit();
} }
代码解释:
JavaScriptClick方法里面的代码实现的是一种封装,把常用的操作写在一个函数方法里,可以方便调用,减少冗余代码的编写,提高测试代码的编写效率
1.2在Ajax方法产生的浮动框中,单击选择包含某个关键字的选项
被测网页的网址:
https://www.sogou.com/
Java语言版本的API实例代码
import java.util.List; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; public class Ajax {
WebDriver driver;
String url = "https://www.sogou.com/";
@Test
public void testAjaxDivOption() throws Exception {
//设置显示等待最长为10秒
WebDriverWait wait = new WebDriverWait(driver,10);
WebElement serchInputBox = driver.findElement(By.id("query"));
serchInputBox.click();
/*因为浮动框的内容总是发生改变如果想选择其中的第几项可以参考注释代码
WebElement serchInputBox1 = driver.findElement(By.xpath("//*[@id='vl']/div[1]/ul/li[1]"));
serchInputBox1.click();*/
//显示等待浮动框的第一个值 防止因页面加载未找到元素而导致失败,未等待可以会因为程序运行过快浮动框的值还未出现,后面的列表可能会取不到值
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='vl']/div[1]/ul/li[1]")));
List<WebElement>suggetionOptions = driver.findElements(By.xpath("//*[@id='vl']/div[1]/ul/li"));
//遍历浮动框的值
for(WebElement element:suggetionOptions){
//找到指定内容项
if(element.getText().contains("康宁研发柔性玻璃")){
System.out.println(element.getText());
element.click();
break;
}
} }
@BeforeMethod
public void beforeMethod() {
System.setProperty("webdriver.chrome.driver", "D:\\WebDriver\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get(url);
} @AfterMethod
public void afterMethod() {
driver.quit();
}
}
代码解释:
此代码主要是测试页面包含Ajax的局部刷新机制,产生显示多条数据的浮动框,因为浮动框的内容总是发生改变如果想选择其中的第几项可以参考注释代码通过数字进行选择
1.3设置一个页面的属性
被测网页的网址源码:
<html>
<head>
<title>设置文本框属性</title>
</head>
<body>
<input id='text' type='text' value='今年夏天西瓜相当甜!' size=100/>文本框</input>
</body>
</html>
Java语言版本的API实例代码
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; public class dataPicker {
WebDriver driver;
String url = "file:///E:/%E6%9D%90%E6%96%99/selenium/%E5%B1%9E%E6%80%A7.html";
@Test
public void testdataPicker() {
WebElement textInputBox = driver.findElement(By.id("text"));
//调用方法改变文本框中的文字
setAttribute(driver,textInputBox,"value","文本框的文字属性和长度已被改变");
//调用方法改变文本框的长度
setAttribute(driver, textInputBox, "size", "10");
//删除文本框的size属性
removeAttribute(driver,textInputBox,"size");
} public void setAttribute(WebDriver driver, WebElement element, String attributeName, String value) {
//调用JavaScript代码修改页面元素的属性
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])", element,attributeName,value);
}
public void removeAttribute(WebDriver driver, WebElement element, String attributeName) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].removeAttribute(arguments[1],arguments[2])", element,attributeName);
}
@BeforeMethod
public void beforeMethod() {
System.setProperty("webdriver.chrome.driver", "D:\\WebDriver\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get(url);
} @AfterMethod
public void afterMethod() {
//driver.quit();
}
}
WebDriver高级应用实例(1)的更多相关文章
- WebDriver高级应用实例(10)
10.1控制HTML5语言实现的视频播放器 目的:能够获取html5语言实现的视频播放器视频文件的地址.时长.控制进行播放暂停 被测网页的网址: http://www.w3school.com.cn/ ...
- WebDriver高级应用实例(9)
9.1封装操作表格的公用类 目的:能够使自己编写操作表格的公用类,并基于公用类进行表格中的元素的各类操作 被测网页的网址的HTML代码: <html> <body> <t ...
- WebDriver高级应用实例(8)
8.1使用Log4j在测试过程中打印日志 目的:在测试过程中,使用Log4j打印日志,用于监控和后续调试测试脚本 被测网页的网址: http://www.baidu.com 环境准备: (1)访问ht ...
- WebDriver高级应用实例(7)
7.1在测试中断言失败的步骤进行屏幕截图 目的:在测试过程中,在断言语句执行失败时,对当前的浏览器进行截屏,并在磁盘上新建一个yyyy-mm-dd格式的目录,并在断言失败时新建一个已hh-mm-ss格 ...
- WebDriver高级应用实例(6)
6.1精确比较网页截图图片 目的:对于核心界面进行截屏,并且使用测试过程中的截图和以前测试过程中的截图进行比较.确认页面是否发生了改变 被测网页的网址: http://www.baidu.com Ja ...
- WebDriver高级应用实例(5)
5.1对象库(UI Map) 目的:能够使用配置文件存储被测试页面上的元素的定位方式和定位表达式,做到定位数据和程序的分离.方便不具备编码能力的测试人员进行修改和配置. 被测网页的网址: http:/ ...
- WebDriver高级应用实例(4)
4.1操作web页面的滚动条 被测网页的网址: http://v.sogou.com Java语言版本的API实例代码 import org.testng.annotations.Test; impo ...
- WebDriver高级应用实例(3)
3.1自动化下载某个文件 被测网页的网址: https://pypi.org/project/selenium/#files Java语言版本的API实例代码 import java.util.Has ...
- WebDriver高级应用实例(2)
2.1在日期选择器上进行日期选择 被测网页的网址: https://www.html5tricks.com/demo/Kalendae/index.html Java语言版本的API实例代码 impo ...
随机推荐
- git分支删除
1.列出本地分支: git branch 2.删除本地分支: git branch -D BranchName 其中-D也可以是--delete,如: git branch --delete Bran ...
- Redis - 事务(multi,exec,watch,unwatch)
转载自:https://blog.csdn.net/wgh1015398431/article/details/53156027:加了一些自己的注解 1.事务 1.1 概述 Redis中的事务(tra ...
- laravel命令
新建控制器 php artisan make:controller IssuesController 新建控制器并自动生成对应RESTful风格路由相关CURD方法 php artisan make: ...
- hdu 5064 满足b2−b1≤b3−b2... 的最长子序列
http://acm.hdu.edu.cn/showproblem.php?pid=5064 要找出一个数组中满足b2−b1≤b3−b2≤⋯≤bt−bt−1 的最大的t 直接引题解: 1003 Fin ...
- nodejs express hi-cms
今天看一下hi-cm是怎么写的,理解一下流程,看一些亮点 它使用express3.x写的 1.app.set, app.get app.set('port', 3000); app.get('port ...
- CNN的学习笔记
1.卷积核的概念,卷积核的size,就是滑动窗口的大小,例如原始数据为28*28的手写数字,滑动窗口size为5*5,则卷积核的size为5*5.卷积核就是权重集合,就是5*5+1.1表示偏置项.卷积 ...
- 如何获得 Microsoft Push Notification Service(MPNS)的最佳体验
有很多同学抱怨MPNS的各种问题,其中包括服务超时.返回各种错误代码不知如何处理等等..今天我用一点时间来为大家介绍下如何处理和操作咱们的MPNS. 首先为大家明确一个问题,Microsoft Pus ...
- 深入研究java.lang.Process类
一.概述 Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序). Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的退出状态 ...
- Jersey Client Post Bean参数
代码: public static void main(String[] args) { Student st = new Student("Adriana", "Bar ...
- 毕业回馈-89C51之数码管的使用
7段码的数码管由7个LED等共同组成,根据公共端的不同有共阴和共阳之分.现在很多数码管在7段码的基础上加了一个.即dp,其内部结构如下图所示: 公共端为LED灯的阴极,所以为共阴极接法: 公共端为阳极 ...