selenium2入门 定位 窗体切换等等 (二)
定位用的html素材有两个
demo.html
<html>
<head>
<title>UI Automation Testing</title>
</head>
<style type="text/css">
table{font-size:20;text-align:center;width:80%;border-collapse:collapse;margin:auto}
table th{background: #ccc}
.display{color:red}
.widgetStyle{text-align:left;padding-left:100px}
</style>
<script>
function display_alert(){
alert("I am an alert box!!")
}
function show_div(){
setTimeout("create_div()", 3000);
}
function create_div(){
d = document.createElement('div');
d.className = "red";
d.style.color='red';
d.innerHTML="wait for display";
document.getElementById("display").appendChild(d);
}
function mouseOver(){
document.getElementById("over").innerHTML="<div class='display'>Hello World!</div>";
}
function mouseOut(){
document.getElementById("over").innerHTML="";
}
</script>
<body>
<div>
<div class="text" style="font-size:36;text-align:center"><b>UI Automation Testing</b></div>
<br/>
<table cellpadding="10" cellspacing="0" border="1">
<thead>
<tr>
<th width=20% class="widgetleft">Widget Name</th>
<th width=80% class="widgetStyle">Widget Operate</th>
</tr>
</thead>
<tbody>
<tr>
<td>Input</td>
<td class="widgetStyle"><div id='input'><input type="text" id="user"/></div></td>
</tr>
<tr>
<td>Link</td>
<td class="widgetStyle"><div id='link'><a href="http://www.baidu.com" class='baidu'>baidu</a></div></td>
</tr>
<tr>
<td>Select</td>
<td class="widgetStyle"><div id='select'>
<select name='select'>
<option value ="volvo">Volvo</option>
<option value ="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
</div>
</td>
</tr>
<tr>
<td>RadioBox</td>
<td class="widgetStyle">
<div id='radio'>
<input type='radio' name="identity" class='Volvo'/><label>Volvo</label></br>
<input type='radio' name="identity" class='Saab'/><label>Saab</label></br>
<input type='radio' name="identity" class='Opel'/><label>Opel</label></br>
<input type='radio' name="identity" class='Audi'/><label>Audi</label>
</div> </td>
</tr>
<tr>
<td>CheckBox</td>
<td class="widgetStyle">
<div id='checkbox'>
<input type="checkbox" name="checkbox1"/><label>Volvo</label></br>
<input type="checkbox" name="checkbox2"/><label>Saab</label></br>
<input type="checkbox" name="checkbox3"/><label>Opel</label></br>
<input type="checkbox" name="checkbox4"/><label>Audi</label>
</div>
</td>
</tr>
<tr>
<td>Button</td>
<td class="widgetStyle"><div id='button'><input type='button' class='button' value='Submit' disabled="disabled"/></div></td>
</tr>
<tr>
<td>Alert</td>
<td class="widgetStyle"><div id='alert'><input type='button' class='alert' value='Alert' onclick='display_alert()'/></div></td>
</tr>
<tr>
<td>Upload</td>
<td class="widgetStyle"><div id='upload'><input type='file' id='load'/></div></td>
</tr>
<tr>
<td>Open New Window</td>
<td class="widgetStyle"><div id='open'><a href="http://baidu.com" class='open' target='_bank'>Open new window</a></div></td>
</tr>
<tr>
<td>Action</td>
<td class="widgetStyle"><div id='action'>
<input type='button' class='over' value='Action'onmouseover="mouseOver()" onmouseout="mouseOut()"/><div id='over'></div>
</div>
</td>
</tr>
<tr>
<td>Wait</td>
<td class="widgetStyle">
<div id='wait'><input type='button' class='wait' value='Wait' onclick = "show_div()"/></div>
<div id='display'></div>
</td>
</tr>
<tr>
<td>Iframe</td>
<td class="widgetStyle">
<iframe width=800 height=330 name=aa frameborder=0 src="./demo1.html"></iframe>
</td>
</tr>
</tbody> </table>
<br/>
</div>
</body>
</html>
demo1.html
<html>
<head>
<title>UI Automation Testing</title>
</head>
<style type="text/css">
table{font-size:20;text-align:center;width:80%;border-collapse:collapse;margin:auto}
table th{background: #ccc}
.display{color:red}
.widgetStyle{text-align:left;padding-left:100px}
</style>
<script>
function display_alert(){
alert("I am an alert box!!")
}
function show_div(){
setTimeout("create_div()", 5000);
}
function create_div(){
d = document.createElement('div');
d.className = "red";
d.style.color='red';
d.innerHTML="wait for display";
document.getElementById("display").appendChild(d);
}
function mouseOver(){
document.getElementById("over").innerHTML="<div class='display'>Hello World!</div>";
}
function mouseOut(){
document.getElementById("over").innerHTML="";
}
</script>
<body>
<div>
<div class="text" style="font-size:36;text-align:center"><b>UI Automation Testing</b></div>
<br/>
<table cellpadding="10" cellspacing="0" border="1">
<thead>
<tr>
<th width=20% class="widgetleft">Widget Name</th>
<th width=80% class="widgetStyle">Widget Operate</th>
</tr>
</thead>
<tbody>
<tr>
<td>Iframe:Input</td>
<td class="widgetStyle"><div id='input'><input type="text" id="user"/></div></td>
</tr>
<tr>
<td>Iframe:Link</td>
<td class="widgetStyle"><div id='link'><a href="http://www.baidu.com" class='baidu'>baidu</a></div></td>
</tr>
<tr>
<td>Iframe:Select</td>
<td class="widgetStyle"><div id='select'>
<select name='select'>
<option value ="volvo">Volvo</option>
<option value ="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
</div>
</td>
</tr>
<tr>
<td>Iframe:RadioBox</td>
<td class="widgetStyle">
<div id='radio'>
<input type='radio' name="identity" class='Volvo'/><label>Volvo</label></br>
<input type='radio' name="identity" class='Saab'/><label>Saab</label></br>
<input type='radio' name="identity" class='Opel'/><label>Opel</label></br>
<input type='radio' name="identity" class='Audi'/><label>Audi</label>
</div> </td>
</tr>
<tr>
<td>Iframe:CheckBox</td>
<td class="widgetStyle">
<div id='checkbox'>
<input type="checkbox" name="checkbox1"/><label>Volvo</label></br>
<input type="checkbox" name="checkbox2"/><label>Saab</label></br>
<input type="checkbox" name="checkbox3"/><label>Opel</label></br>
<input type="checkbox" name="checkbox4"/><label>Audi</label>
</div>
</td>
</tr>
<tr>
<td>Iframe:Button</td>
<td class="widgetStyle"><div id='button'><input type='button' class='button' value='Submit' disabled="disabled"/></div></td>
</tr>
<tr>
<td>Iframe:Alert</td>
<td class="widgetStyle"><div id='alert'><input type='button' class='alert' value='Alert' onclick='display_alert()'/></div></td>
</tr>
<tr>
<td>Iframe:Upload</td>
<td class="widgetStyle"><div id='upload'><input type='file' id='load'/></div></td>
</tr>
<tr>
<td>Iframe:Open New Window</td>
<td class="widgetStyle"><div id='open'><a href="http://baidu.com" class='open' target='_bank'>Open new window</a></div></td>
</tr>
<tr>
<td>Iframe:Action</td>
<td class="widgetStyle"><div id='action'>
<input type='button' class='over' value='Action'onmouseover="mouseOver()" onmouseout="mouseOut()"/><div id='over'></div>
</div>
</td>
</tr>
<tr>
<td>Iframe:Wait</td>
<td class="widgetStyle">
<div id='wait'><input type='button' class='wait' value='Wait' onclick = "show_div()"/></div>
<div id='display'></div>
</td>
</tr>
</tbody> </table>
<br/>
</div>
</body>
</html>
定位代码:
代码1:
package info.milan.webdriver;
import java.io.File;
import java.util.List; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
public class day4 {
public WebDriver Driver;
public void startFirefox(){
Driver = new FirefoxDriver();
//最大化
Driver.manage().window().maximize();
}
public void closeFirefox(){
Driver.close();
Driver.quit();
}
public void goTo(){
File f = new File("html/demo.html");
Driver.navigate().to(f.getAbsolutePath());
}
//输入框定位
public void testInput(String str){
///对于文本框的操作,都使用sendkeys来操作
Driver.findElement(By.xpath(".//*[@id='user']")).sendKeys(new String[]{str});
//Driver.findElement(By.xpath(".//*[@id='user']")).clear();
}
//超链接定位
public void testLink(){
Driver.findElement(By.xpath("//a[@class='baidu']")).click();
}
//下拉框定位
public void testOption(){
WebElement element= Driver.findElement(By.cssSelector("select[name='select']"));
Select select = new Select(element);
select.selectByValue("audi");
select.selectByIndex(1);
select.selectByVisibleText("Audi");
System.out.println(select.getFirstSelectedOption().getText());
List<WebElement> options= select.getOptions();
int optionsSize = options.size();
System.out.println("options一共有多少个:"+optionsSize);
for(int i =0;i<optionsSize;i++){
select.selectByIndex(i);
}
}
//单选框定位
public void testRadio(){
//name定位
List<WebElement> elements= Driver.findElements(By.name("identity"));
WebElement el= elements.get(2);
el.click();
boolean isSelect = el.isSelected();
System.out.println("是否被选中:"+elements.get(3).isSelected());
}
//定位复选框
public void testCheckBox(){
//xpath定位
List<WebElement> elements= Driver.findElements(By.xpath(".//div[@id='checkbox']/input"));
elements.get(2).click();
// elements.get(0).click();
for (WebElement e : elements){
if (!e.isSelected()){
e.click();
}
}
}
public void testButton(){
WebElement element= Driver.findElement(By.xpath(".//div[@id='alert']/input"));
element.click();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
day4 t = new day4();
t.startFirefox();
t.goTo();
t.testInput("你好");
//t.testLink();
t.testCheckBox();
t.testRadio();
} }
代码2:
package info.milan.webdriver;
import java.io.File;
import java.util.Set; import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
public class day5 {
public WebDriver Driver;
public void startFirefox(){
Driver = new FirefoxDriver();
Driver.manage().window().maximize();
}
public void closeFirefox(){
Driver.close();
Driver.quit();
}
public void goTo(){
File f = new File("html/demo.html");
Driver.navigate().to(f.getAbsolutePath());
}
//模拟点击弹出窗alert的确定。
public void testAlert(){
WebElement element= Driver.findElement(By.className("alert"));
//element.click();
Actions action = new Actions(Driver);
action.click(element).perform();
//获取当前弹出的alert窗
Alert alert = Driver.switchTo().alert();
String alertMessage = alert.getText();
System.out.println(alertMessage);
///模拟点击alert确认按钮
alert.accept();
}
public void testAction(){
WebElement element= Driver.findElement(By.className("over"));
Actions action = new Actions(Driver);
//将鼠标移动到Action的按钮上面
action.moveToElement(element).perform();
//输出鼠标移动到action按钮上面后显示的文字。
System.out.println( Driver.findElement(By.id("over")).getText());;
}
//上传
public void testUpload(){
WebElement element= Driver.findElement(By.id("load"));
element.sendKeys("C:\\Users\\Administrator\\Desktop\\123.xls");
}
//运行一段js
public void testJs(){
JavascriptExecutor javascript =(JavascriptExecutor)Driver;
javascript.executeScript("alert('你好!')"); }
//对iframe中元素的操作
public void testIframe(){
Driver.findElement(By.id("user")).sendKeys("my test"); WebElement element = Driver.findElement(By.name("aa"));
Driver.switchTo().frame(element);
//Driver.switchTo().frame("aa");
//Driver.switchTo().frame(0);
Driver.findElement(By.id("user")).sendKeys("iframe test"); Driver.switchTo().defaultContent();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Driver.findElement(By.id("user")).sendKeys("my end test");
}
//对多个窗口进行切换操作
public void testMultiWindow(){
WebElement element = Driver.findElement(By.className("open"));
element.click();
Set<String> handles = Driver.getWindowHandles();
String handle = Driver.getWindowHandle(); //得到默认最初窗体句柄 handles.remove(handle);
String newHandle = handles.iterator().next();
print(newHandle);
print(handle);
Driver.switchTo().window(newHandle);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Driver.findElement(By.id("kw")).sendKeys("myString");
//Driver.close();
Driver.switchTo().window(handle);
Driver.findElement(By.id("user")).sendKeys("new test"); }
//获取延时信息,常用于操作ajax请求返回的信息
public void testWait(){
WebElement element = Driver.findElement(By.className("wait"));
element.click();
//方法1 用Thread.sleep,设置了10秒,只能10秒后才能获取数据。
// try {
// Thread.sleep(6000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//Driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
//方法2 用WebDriverWait,设置了10秒 如果数据5秒就返回的话,5秒就能获取到数据
boolean wait = new WebDriverWait(Driver,10).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.findElement(By.className("red")). isDisplayed();}
}); print(String.valueOf(wait) );
WebElement elementRed = Driver.findElement(By.className("red"));
String str = elementRed.getText();
print(str); }
public void print(String str){
System.out.println(str); } public static void main(String[] args) {
// TODO Auto-generated method stub
day5 t = new day5();
t.startFirefox();
t.goTo();
// t.testMultiWindow();
// t.testWait();
//t.testAction();
//t.testUpload();
t.testWait();
} }
selenium2入门 定位 窗体切换等等 (二)的更多相关文章
- selenium2 定位 窗体切换等等 (二)
定位用的html素材有两个 demo.html <html> <head> <title>UI Automation Testing</title> & ...
- Selenium2入门(二)WebDriver
前文Selenium2入门(一)说到Selenium是Web 应用程序测试框架,那么如果对一个简单的web应用需求:打开浏览器,登录百度首页,输入“欧洲杯”关键词,点击搜索按钮 这一系列操作,能否用S ...
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...
- Python_selenium之窗口切换(二)
Python_selenium之窗口切换(二)一.思路拆分1. 之前有介绍窗口切换,这里加上断言部分2. 这里还是以百度新闻为例,获取百度新闻网址http://news.baidu.com/3. 同样 ...
- selenium中的元素操作之三大切换(二)
一.窗口切换 使用方法: 1.获取到打开的所有的窗口,句柄handles all_handles = driver.window_handles print(all_handles) 2.获取当前的窗 ...
- c# winform中窗体切换后释放及防止重复生成
问题1:窗体切换后如何关闭,并释放资? c# winform中,2个窗体,form1和form2,互相切换的时候执行 this.Hide(); Form2 form2 = new Form2(); f ...
- selenium之 定位以及切换frame(iframe)
Set<String> windows = driver.getWindowHandles(); int count = 0; for(String handl ...
- 一天带你入门到放弃vue.js(二)
接下来我们继续学习一天带你入门到放弃系列vue.js(二),如有问题请留言讨论! v-if index.html <div id="app"> <p v-if=& ...
- Spring Cloud 入门 之 Ribbon 篇(二)
原文地址:Spring Cloud 入门 之 Ribbon 篇(二) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Cloud 入门 之 Eureka ...
随机推荐
- opencv-形态处理
开运算 (Opening) 原理摘自:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/opening_closi ...
- Atitit。团队建设--管理最佳实践--如何留住关键人才,防止人才外流 ??
Atitit.团队建设--管理最佳实践--怎样留住核心人才,防止人才流失 ?? 1. 1.人才流失后果 1 1. 1.员工的离职带走商业技术秘密和客户等资源 1 2. 2.影响在职员工的情绪.极大挫伤 ...
- java_访问权限修饰符
java的访问权限修饰符有四种,根据权限由大到小的顺序为:public,protected,包访问权限(默认,没有修饰符),private. 根据修饰的东西不同,详细介绍如下: 1.修饰类的话分为两种 ...
- SharePoint 2013 中将 HTML文件转换为母版页
原文:SharePoint 2013 中将 HTML文件转换为母版页 SharePoint 2013提供了很多新功能,下面我们看看将Html页面,转换为母版页的功能.这个功能更加方便设计人员设计母版页 ...
- NSIS:判断程序是否运行并进行卸载
原文NSIS:判断程序是否运行并进行卸载 今天在评论里看到网友说要一个这样的功能,就简单写了一个,本来想做360杀手来着,但遗憾的是我从来不用360的东西,所在电脑上也没有360相关的软件进行测试,所 ...
- CentOS7 安装Hadoop集群环境
先按照上一篇安装与配置好CentOS以及zookeeper http://www.cnblogs.com/dopeter/p/4609276.html 本章介绍在CentOS搭建Hadoop集群环境 ...
- C#中假设正确使用线程Task类和Thread类
C#中使用线程Task类和Thread类小结 刚接触C#3个月左右.原先一直使用C++开发.由于公司的须要,所地採用C#开发.主要是控制设备的实时性操作,此为背景. 对于C#中的Task和Thread ...
- hdu 4919 Exclusive or
Exclusive or Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) T ...
- 全网最全ASP.NET MVC 教程汇总
全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MV ...
- 利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能
原文:利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能 利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能1.在界面上添加几个checkbox和一 ...