当前位置: 首页 > news >正文

java selenium (十四) 处理Iframe 中的元素

有时候我们定位元素的时候,发现怎么都定位不了。 这时候你需要查一查你要定位的元素是否在iframe里面

 

阅读目录

 

 

什么是iframe

iframe 就是HTML 中,用于网页嵌套网页的。 一个网页可以嵌套到另一个网页中,可以嵌套很多层。

 

selenium 中提供了进入iframe 的方法

 

// 进入 id 叫frameA 的 iframe
dr.switchTo().frame("frameA");
// 回到主窗口 dr.switchTo().defaultContent();

 

main.html

复制代码
<html>
<head>
    <title>FrameTest</title>
</head>
<body>
    <div id="id1">this is main page's div!</div>
    <input type="text" id="maininput" />
    <br/>
    <iframe id="frameA" frameborder="0" scrolling="no" style="left:0;position:absolute;" src="frame.html"></iframe>
</body>
</html>  
复制代码

frame.html

复制代码
<html>
<head>
    <title>this is a frame!</title>
</head>
<body>
    <div id="div1">this is iframes div,</div>
    <input id="iframeinput"></input>
</body>
</html>  
复制代码

 

selenium 代码

复制代码
    public static void testIframe(WebDriver driver)
    {
        driver.get("E:\\StashFolder\\huoli_28@hotmail.com\\Stash\\Tank-MoneyProject\\浦东软件园培训中心\\我的教材\\Selenium Webdriver\\frame\\main.html");    
        
        // 在 主窗口的时候
        driver.findElement(By.id("maininput")).sendKeys("main input");
        // 此时 没有进入到iframe, 以下语句会报错
        //driver.findElement(By.id("iframeinput")).sendKeys("iframe input");
                
        driver.switchTo().frame("frameA");
        driver.findElement(By.id("iframeinput")).sendKeys("iframe input");
        
        // 此时没有在主窗口,下面语句会报错
        //driver.findElement(By.id("maininput")).sendKeys("main input");
        
        // 回到主窗口
        driver.switchTo().defaultContent();
        driver.findElement(By.id("maininput")).sendKeys("main input");  
    }
复制代码

转载于:https://www.cnblogs.com/nieliangcai/p/7149116.html

相关文章:

  • 日志架构
  • 各种定位方式
  • JAVA个人小程序GUI篇-收银(标签、按钮、复选框、下拉标、文本域、表格······)...
  • [bzoj2957]楼房重建
  • 杨辉三角的几种方法
  • 标题四
  • 3种上传图片并实现预览的方法
  • 暑假小集训
  • [无线路由] “免费”斐讯K2路由器刷OpenWRT(实战MWAN多宽带网速叠加)
  • 静态变量
  • Java字节数组和16进制字符串的互相转化
  • 多进程与多线程的区别
  • java线程详细介绍
  • let 和 const 命令
  • 简单的请求-处理-响应
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • “大数据应用场景”之隔壁老王(连载四)
  • Docker 笔记(2):Dockerfile
  • Docker容器管理
  • ES6核心特性
  • gitlab-ci配置详解(一)
  • Logstash 参考指南(目录)
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Swoft 源码剖析 - 代码自动更新机制
  • Terraform入门 - 1. 安装Terraform
  • Vue 重置组件到初始状态
  • vue-loader 源码解析系列之 selector
  • XML已死 ?
  • 安装python包到指定虚拟环境
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 缓存与缓冲
  • 回流、重绘及其优化
  • 简析gRPC client 连接管理
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 异步
  • 正则学习笔记
  • zabbix3.2监控linux磁盘IO
  • ###C语言程序设计-----C语言学习(6)#
  • #include
  • (C)一些题4
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)重识new
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .net core Swagger 过滤部分Api
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .Net接口调试与案例
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比