采用下面的例子来编写用例

<!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)--多表单切换(十二)的更多相关文章

  1. selenium基础(多表单切换、多窗口切换)

    一.多表单的切换 frame:HTML页面中的一中框架,主要作用是在当前页面中指定区域显示另一页面元素:              (HTML语言中,frame/iframe标签为表单框架) 在web ...

  2. Selenium基础知识(四)表单切换

    在测试过程中,经常会碰到frame和iframe,嵌套等情况 这种情况下直接通过id,name等等是无法定位到的 好在selenium替我们想到了这个问题switch_to方法解决问题 switch_ ...

  3. Selenium 3----定位一组元素+多表单切换+多窗口切换

    定位一组元素 和定位单个元素类似,WebDriver提供了8种用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数. find_e ...

  4. selenium 多表单切换处理(iframe/frame)

    在web应用中,前台网页的设计一般会用到iframe/frame表单嵌套页面的应用.简单的就是一个页面签嵌套多个HEML/JSP文件.selenium webdriver  只能在同一页面识别定位元素 ...

  5. selenium webdriver——多表单切换与多窗口切换

    多表单切换 >>在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe 表单内嵌页面上的元素无 ...

  6. Selenium 2自动化测试实战15(多表单切换)

    一.多表单切换 在web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位.这 ...

  7. selenium多表单切换以及多窗口切换、警告窗处理

    selenium表单切换 在做UI自动化,有时候要定位的元素属性在页面上明明是唯一的.却怎么也不执行对元素的操作动作,这时候多半是iframe表单在作怪. 切入表单:iddriver.switch_t ...

  8. java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例

    java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...

  9. java工具类(二)之java正则表达式表单验证

    java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...

  10. webdriver--定位一组元素+iframe表单切换

    定位一组元素:find_elements,返回的是list,所以可以用列表的索引对列表里的某个元素操作,也可以用for循环访问list,依次操作各元素 driver.find_elements_by_ ...

随机推荐

  1. 谈谈CListCtrl如何调整行高

    原文链接: http://blog.csdn.net/sstower/article/details/9094939 调整CListCtrl 行高通常有3种方法: 1.设定字体2.设定图片3.处理Me ...

  2. PHP Client for Mysql Binlog

    PHP解析MySQL Binlog,依赖于mysql-replication-listener库 详见:https://github.com/bullsoft/php-binlog Install M ...

  3. spring mvc get方式乱码

    使用spring get方式,向后台传递参数的时候,出现乱码,网上搜索了好久,最后发现原因是server.xml中默认的配置有问题,修改如下就正确了,图片: 文本信息:     <Connect ...

  4. dubbo-monitor监控台的部署

    参考资料:dubbo的monitorhttps://github.com/handuyishe/dubbo-monitorhttp://blog.yangcvo.me/2017/01/26/Java- ...

  5. SGMII 和 Serdes 的详细说明

    Serdes  : SERDES是英文SERializer(串行器)/DESerializer(解串器)的简称.它是一种时分多路复用(TDM).点对点的通信技术,即在发送端多路低速并行信号被转换成高速 ...

  6. NSArray的排序方法

    转自:http://blog.csdn.net/lixuwen521/article/details/7848893 1.sortedArrayUsingSelector (按Key值大小对NSDic ...

  7. Oracle中文字符乱码?设置Oracle客户端字符编码与服务端一致

    经常可能出现查询Oracle数据时,中文显示乱码,这很可能是因为,Oracle服务端的字符编码与客户端不一致引起的. 这时,我们需要做的是,如何设置自己的客户端字符编码与服务端一致. 查询Oracle ...

  8. 四、用“”或构造函数创建Java的String区别

    在Java中,一个字符串可以通过下面两种方法创建. String x = "abc"; String y = new String("abc"); 用双引号创建 ...

  9. 小程序之自定义组件 ---- 列表goodsList

    教程请查看小程序开发文档:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/ 自定义组件:自定义组 ...

  10. Oracle数据库字符集问题解析

    Oracle数据库字符集问题解析 经常看到一些朋友问ORACLE字符集方面的问题,我想以迭代的方式来介绍一下.第一次迭代:掌握字符集方面的基本概念.有些朋友可能会认为这是多此一举,但实际上正是由于对相 ...