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

<!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. DevExpress导出Excel样式设置

    /// <summary> /// 导出到Excel /// </summary> /// <param name="gridControl"> ...

  3. introduction to python for statistics,analysis笔记2

    一.行列式连接concatenate函数,axis=0是垂直拼接,axis=1是水平拼接 x=np.array([[],[,]]); y=np.array([[],[,]]); z=np.concat ...

  4. Spring Cloud构建微服务架构(四)分布式配置中心

    Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持.配置服务器为各应用的所有环境提供了一个中心化的外部配置.它实现了对服务端和客户端对Spring Environm ...

  5. Codeforces 86C Genetic engineering (AC自己主动机+dp)

    题目大意: 要求构造一个串,使得这个串是由所给的串相连接构成,连接能够有重叠的部分. 思路分析: 首先用所给的串建立自己主动机,每一个单词节点记录当前节点可以达到的最长后缀. 開始的时候想的是dp[i ...

  6. 【Android】9.2 内置行视图的分类和呈现效果

    分类:C#.Android.VS2015: 创建日期:2016-02-18 一.简介 Android内置了很多行视图模板,在应用程序中可直接使用这些内置的视图来呈现列表项. 要在ListView中使用 ...

  7. node-inspector调试报错问题处理

    使用node-inspector调试的时候,提示下面的异常,我的node版本是6.9.2出现下面的异常,我同事的版本4.2.1就没有这个问题. C:\Users\dzm>node-inspect ...

  8. webpack 利用Code Splitting 分批打包、按需下载

    webpack中的解决方案——Code Splitting,简单来说就是按需加载(下载),如果是requireJS对应的AMD的方案中这本是在正常不过了.但是在webpack中All in one的思 ...

  9. 查杀病毒实战----------------》ddg.223 and AnXQV

    htop 发现导常: 接着发现可疑进程: 首先检测crontab,发现问题: # crontab -l */ * * * * curl -fsSL http://www.bdyutiudwj.com/ ...

  10. 歌手右侧快速入口ABCD....

    1.通过v-for将右侧内容渲染出来,并绝对定位到右侧 2.给每个li绑定touchStart事件,并绑定自定义属性data-index=index: 3.点击每个li,通过e来获取所绑定的自定义属性 ...