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

<!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. Android中实现下拉刷新

    需求:项目中的消息列表界面要求实现类似sina微博的下拉刷新: 思路:一般的消息列表为ListView类型,将list加载到adapter中,再将adapter加载到 ListView中,从而实现消息 ...

  2. Maven pom.xml 报 Missing artifact jdk.tools:jdk.tools:jar:1.7

    linux中用eclipse 新建maven project,pom.xml中报Missing artifact jdk.tools:jdk.tools:jar:1.7 解决方法: 在pom.xml中 ...

  3. adobe acrobat 无效批注对象

    http://blog.csdn.net/pipisorry/article/details/40894881 adobe acrobat一直弹出 无效批注对象 检查后提示:"本页面上的全部 ...

  4. 最简短的openvpn的设置方式

    这种方式对于测试能否连接到远程系统,十分的有用.尤其是国内复杂的网络环境下,检测一下,到底是服务器的原因,还是网络因素造成的,这是一个快捷的方式. 需要注意的是:这种方法是用明文连接.所有的加密措施都 ...

  5. SD卡WAV音乐播放器(quartus11.0)(FAT32)(DE2-115)

    准备工具:格式工厂,Windows录音机,SD卡(小于等于2G),音箱 首先,选一首MP3,用格式工场转化成WAV格式.可以看到转化后的文件变得很大,因为WAV就是AD采样值加个文件头,所以数据量巨大 ...

  6. [svc]samba服务搭建

    说实话搞这些很蛋疼, 没啥技术含量. What is Samba? 这个历史悠久了 Since 1992, Samba has provided secure, stable and fast fil ...

  7. Linux系统CPU的性能监控及调优

    前言: 性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢.接口超时,服务器负载高.并发数低,数据库频繁死锁等.尤其是在“糙快猛”的互联网开发模式大行其道的今天,随着系统访问量的日益增加和代码的 ...

  8. Effective JavaScript Item 46 优先使用数组而不是Object类型来表示有顺序的集合

    本系列作为Effective JavaScript的读书笔记. ECMAScript标准并没有规定对JavaScript的Object类型中的属性的存储顺序. 可是在使用for..in循环对Objec ...

  9. error: expected expression before 'struct'

    错误原因: 使用了offsetof函数,却没有包含头文件<stddef.h> 解决办法: 包含<stddef.h>

  10. ubuntu 14.04英文环境设置成中文

    适用于ubuntu 14.04英文版的系统,其它版本的设置应该是大同小异的. 进入ubuntu系统,在顶部齿状标志找到system... 2.在personal找到Language Support 3 ...