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 ...
随机推荐
- Python GUI 编程
Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...
- 594. Longest Harmonious Subsequence
方法一:用一个map来辅助,代码简单,思路清晰 static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }( ...
- 2018.09.24 bzoj1816: [Cqoi2010]扑克牌(二分答案)
传送门 简单二分答案. 我们二分最终有k个牌堆. 这样joker被选择的张数≤min(k,m)\le min(k,m)≤min(k,m) 并且joker需要被选择的张数应该是∑i−1nmax(0,k− ...
- yii2 控制器的生命周期
控制器生命周期 http://www.yii-china.com/doc/guide/structure_controllers.html 处理一个请求时,应用主体 会根据请求路由创建一个控制器,控制 ...
- python小练习--属性
箭头这个作业: class Box:#定义一个类名为Box,类名后不必有括号,类包含类属性和类方法,这个类没有定义类属性 '''这是一个计算体积的类'''#这是这个类的__doc__属性,执行类后就可 ...
- python读取文件,python读取的1变成\ufeff1
'\ufeff1' movies={} fm=open(self.path+'/movie.txt',encoding='utf-8') w2=open('./data/1.txt','a') for ...
- memCachedClient 客户端调用时注意的问题,坑
// 第三个参数为计算该消息在服务器存放位置用 memCachedClient.add("someKey", "someValue", 10*24*60*60* ...
- 在 Java 中使用 protobuf
在 Java 中使用 protobuf 从 https://github.com/google/protobuf/releases 下载编译器,并设置环境变量. 创建java项目添加protobuf- ...
- css控制英文内容自动换行問題
css控制英文内容自动换行 HTML: <!-- 因为要显示的内容是用户通过CMS添加进入数据库,再抓取出来前台显示的,所以你根本无法 控制每一行内容的长度. 所以我在显示内容的div设置了一个 ...
- UniGUI的TUniLoginForm窗口自定义背景色
uniGUI的TUniLoginForm类创建的登录窗口默认是不带颜色,可以自定义css风格来改变背景颜色. 一般是通过在UniServerModule中,在CustcomSS属性中,修改extjs的 ...