selenium测试(Java)--多表单切换(十二)
采用下面的例子来编写用例
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>frame switch</title>
<link
href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css"
rel="stylesheet" />
</head>
<body>
<div class="row-fluid">
<div class="span10 well">
<h3>frame</h3>
<iframe id="if" name="nf" src="http://www.baidu.com" width="800" height="300"></iframe>
</div>
</div>
</body>
<script
src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></script>
</html>
代码:
package com.test.frame; import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions; public class frameSwitch { public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("file:///D:/10-selenium/workspace/SeleniumTest/src/com/test/frame/frame.html");
driver.manage().window().maximize(); // 利用id来切换
waitTime(2000);
driver.switchTo().frame("if"); waitTime(2000);
if (driver.findElement(By.xpath("//*[@id='kw']")).isDisplayed()) {
driver.findElement(By.xpath("//*[@id='kw']")).sendKeys("switch successfully");
// 切换到父frame
driver.switchTo().parentFrame();
try {
driver.findElement(By.xpath("//*[@id='kw']"));
} catch (NoSuchElementException e) {
String js = "alert(\"switch to parent\")";
((JavascriptExecutor) driver).executeScript(js);
waitTime(3000);
driver.switchTo().alert().dismiss();
}
} // 利用name来切换
waitTime(2000);
driver.switchTo().frame("nf"); waitTime(2000);
if (driver.findElement(By.xpath("//*[@id='kw']")).isDisplayed()) {
driver.findElement(By.xpath("//*[@id='kw']")).sendKeys("switch successfully");
driver.switchTo().parentFrame();
try {
driver.findElement(By.xpath("//*[@id='kw']"));
} catch (NoSuchElementException e) {
String js = "alert(\"switch to parent\")";
((JavascriptExecutor) driver).executeScript(js);
waitTime(3000);
driver.switchTo().alert().dismiss();
}
} // 利用定位元素来切换-xpath
waitTime(2000);
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@id='if']"))); waitTime(2000);
if (driver.findElement(By.xpath("//*[@id='kw']")).isDisplayed()) {
driver.findElement(By.xpath("//*[@id='kw']")).sendKeys("switch successfully");
driver.switchTo().parentFrame();
try {
driver.findElement(By.xpath("//*[@id='kw']"));
} catch (NoSuchElementException e) {
String js = "alert(\"switch to parent\")";
((JavascriptExecutor) driver).executeScript(js);
waitTime(3000);
driver.switchTo().alert().dismiss();
}
} // 利用定位元素来切换-css
waitTime(2000);
driver.switchTo().frame(driver.findElement(By.cssSelector("#if"))); waitTime(2000);
if (driver.findElement(By.xpath("//*[@id='kw']")).isDisplayed()) {
driver.findElement(By.xpath("//*[@id='kw']")).sendKeys("switch successfully");
driver.switchTo().parentFrame();
try {
driver.findElement(By.xpath("//*[@id='kw']"));
} catch (NoSuchElementException e) {
String js = "alert(\"switch to parent\")";
((JavascriptExecutor) driver).executeScript(js);
waitTime(3000);
driver.switchTo().alert().dismiss();
driver.quit();
}
}
} static public void waitTime(int time) { try {
Thread.sleep(time);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
selenium测试(Java)--多表单切换(十二)的更多相关文章
- selenium基础(多表单切换、多窗口切换)
一.多表单的切换 frame:HTML页面中的一中框架,主要作用是在当前页面中指定区域显示另一页面元素: (HTML语言中,frame/iframe标签为表单框架) 在web ...
- Selenium基础知识(四)表单切换
在测试过程中,经常会碰到frame和iframe,嵌套等情况 这种情况下直接通过id,name等等是无法定位到的 好在selenium替我们想到了这个问题switch_to方法解决问题 switch_ ...
- Selenium 3----定位一组元素+多表单切换+多窗口切换
定位一组元素 和定位单个元素类似,WebDriver提供了8种用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数. find_e ...
- selenium 多表单切换处理(iframe/frame)
在web应用中,前台网页的设计一般会用到iframe/frame表单嵌套页面的应用.简单的就是一个页面签嵌套多个HEML/JSP文件.selenium webdriver 只能在同一页面识别定位元素 ...
- selenium webdriver——多表单切换与多窗口切换
多表单切换 >>在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe 表单内嵌页面上的元素无 ...
- Selenium 2自动化测试实战15(多表单切换)
一.多表单切换 在web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位.这 ...
- selenium多表单切换以及多窗口切换、警告窗处理
selenium表单切换 在做UI自动化,有时候要定位的元素属性在页面上明明是唯一的.却怎么也不执行对元素的操作动作,这时候多半是iframe表单在作怪. 切入表单:iddriver.switch_t ...
- java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例
java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...
- java工具类(二)之java正则表达式表单验证
java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...
- webdriver--定位一组元素+iframe表单切换
定位一组元素:find_elements,返回的是list,所以可以用列表的索引对列表里的某个元素操作,也可以用for循环访问list,依次操作各元素 driver.find_elements_by_ ...
随机推荐
- C#趣味程序---车牌号推断
甲说前两位同样,乙说后两位同样,丙说四位的车牌号刚好是一个数的平方.这个车牌号是多少? using System; namespace ConsoleApplication1 { class Prog ...
- Spring boot处理OPTIONS请求
一.现象从fetch说起,用fetch构造一个POST请求. fetch('http://127.0.0.1:8000/api/login', { method: "POST", ...
- stm32 外扩SRAM使用问题
当把外扩SRAM内存拷贝到片上SRAM内存时使用内存拷贝函数memset()或者原子定义的mymemset()函数,编译器会提示空间不足. 原因是这两个函数一个是只能对片上SRAM操作,一个是只能对外 ...
- @RequestBody 处理类型 和 对象 和 json 相互转换
1 @RequestBody 处理类型 在项目中经常看到controller 中有 @RequestBody 字样,他到底有什么作用? 一般使用表单提交数据时不需要使用@RequestBody 即可自 ...
- cocos2dx 3.3将坐标由父空间转化到局部空间
设在node的父空间内有一点p,要求其转化到node局部空间后的坐标p_local,代码如下: node->getNodeToParentTransform();//in order node- ...
- modelsim 保存波形文件
1. do文件记录了仿真的过程和加载的各种库. do文件的保存过程: file——>save format——>D:/modeltech_6.5b/examples/run_wave.do ...
- JVM Inline
http://www.ssw.uni-linz.ac.at/Research/Papers/Wimmer08PhD/Wimmer08PhD.pdf http://www.azulsystems.com ...
- 黑客编程教程(六)Windows的关机和重起
第六节 Windows的关机和重起 很多木马都有远程关机功能,但这并不是一个很好的功能.不过对于入侵服务器,有时需要重起服务器.其实对于关机和重起,只需要调用几个 API函数即可实现. 对于WIN9X ...
- 收集Cocos2d提供的字体!共57种
很多游戏中,便于开发就会直接采用Cocos2d提供的字体库来使用,但是因为提供的种类很多,那么Himi利用一些时间整理了57种字体样式,这些我想足够你用了: 不多说下面一起来看看吧:(每张图对应11种 ...
- https编程遇到PKIX:unable to find valid certification path to requested target 的问题
https编程遇到PKIX:unable to find valid certification path to requested target 的问题 2016-12-01 解决方案见:解决PKI ...