Selenium->iframe的处理

有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没
有任何问题。这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一。如果你在
一个default content中查找一个在iframe中的元素,那肯定是找不到的。反之你在一个iframe中查找另一个
iframe元素或default content中的元素,那必然也定位不到。

main.html

<html>
<head>
  <title>FrameTest</title>
</head>
<body>
  <div id = "id1">this is a div!</div>
  <iframe id = "frame" frameborder="0" scrolling="no" style="left:0;position:absolute;" src
</body>
</html>

frame.html

<html>
<head>
  <title>this is a frame!</title>
</head>
<body>
  <div id = "div1">this is a div,too!</div>
  <label>input:</label>
  <input id = "input1"></input>
</body>
</html>
public static void main(String[] args) {

        WebDriver dr = new FirefoxDriver();

        String url = "\\Your\\Path\\to\\main.html";

        dr.get(url);

        //在default content定位id="id1"的div

        dr.findElement(By.id("id1"));

        //此时,没有进入到id="frame"的frame中时,以下两句会报错

        //dr.findElement(By.id("div1"));//报错

        //dr.findElement(By.id("input1"));//报错

        //进入id="frame"的frame中,定位id="div1"的div和id="input1"的输入框。

        dr.switchTo().frame("frame");

        dr.findElement(By.id("div1"));

        dr.findElement(By.id("input1"));

        //此时,没有跳出frame,如果定位default content中的元素也会报错。

        //dr.findElement(By.id("id1"));//报错

        //跳出frame,进入default content;重新定位id="id1"的div

        dr.switchTo().defaultContent();

        dr.findElement(By.id("id1"));
    }

}

switch_to方法会new1个TargetLocator对象,使用该对象的frame方法可以将当前识别的”主体”移动到需要定位的frame上去。

时间: 2024-10-15 12:23:37

Selenium->iframe的处理的相关文章

selenium - iframe子框架

特点 网页中嵌套了网页,先切换到iframe子框架,然后再执行其他操作 方法 browser.switch_to.iframe(iframe_element) 示例 - 登录qq邮箱 from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://mail.qq.com/') # 切换到iframe子框架 login_frame = driver.find_element_by_

selenium - iframe操作

# 5. Iframe操作 # iframe:一个网页里面嵌套了另一个html页面 # 方式1:driver.switch_to.frame(iframe_reference)# iframe_reference的值:# (1)iframe的name属性# (2)iframe的WebElement属性# (3)iframe的下标(在当前页面的第几个iframe) # 方式2:frame_to_be_available_and_switch_to_it(iframe_reference)# 此方法

selenium iframe

http://blog.csdn.net/wang122188/article/details/7699032 http://www.cnblogs.com/qixue/p/3928775.html http://blog.csdn.net/dongtianlaile/article/details/9854263 http://blog.sina.com.cn/s/blog_68f262210101mcxp.html

Java中通过Selenium WebDriver定位iframe中的元素

问题:有一些元素,无论是通过id或是xpath等等,怎么都定位不到. 分析:这很可能是因为你要定位的元素被嵌套在了当前页面的一个iframe元素中,Selenium对iframe中的元素有特殊的定位规则,WebDriver不能够直接进行定位. 解决办法:我们要把这个iframe元素找出来,让WebDriver转移到这个iframe元素上,之后再让WebDriver对iframe中的元素进行定位. 因为最近在用Java来做一些东西,所以就顺便说一下Selenium在Java环境下的使用,总共分三步

自动化测试——Selenium IDE处理iframe问题

在利用Selenium IDE进行录制与回放的过程中,遇到页面含有iframe时,需要通过selectFrame命令,进入到iframe中方能进行相关操作. 在iframe中完成操作后,需返回上一级框架或顶级框架.relative=top,表示返回顶级框架:relative=parent,表示返回上一级框架:也可以通过index=0来表示第一个框架.

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

有时候我们定位元素的时候,发现怎么都定位不了. 这时候你需要查一查你要定位的元素是否在iframe里面 阅读目录 什么是iframe iframe 就是HTML 中,用于网页嵌套网页的. 一个网页可以嵌套到另一个网页中,可以嵌套很多层. selenium 中提供了进入iframe 的方法 // 进入 id 叫frameA 的 iframe dr.switchTo().frame("frameA"); // 回到主窗口 dr.switchTo().defaultContent(); ma

Java Selenium (十二) 操作弹出窗口 &amp; 智能等待页面加载完成 &amp; 处理 Iframe 中的元素

一.操作弹出窗口   原理 在代码里, 通过 Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄, 然后遍历, 使用swithcto.window(newwindow_handle)方法. 就可以定位到新的窗口. 测试页面的HTML <html> <head> <title>常见web ui元素操作, 及API使用</title> <script type

selenium中定位iframe框

这是使用谷歌看到的源码.想要往里面输入内容,需要使用js. 这个iframe没有id,不能通过id直接定位到.但可以通用TagName来定位到iframe. WebDriver中定位的代码如下: 1 String js="document.getElementsByTagName('iframe')[0].contentWindow.document.body.innerHTML='在iframe框中输入的内容'"; 2 ((JavascriptExecutor)driver).exe

selenium如何跳转到iframe

处理iframe,selenium提供了3中方法: 1.有id,传入id 2.有name,传入name 3.先找到iframe的元素,再传入该元素对象

selenium webdriver学习(五)------------iframe的处理(转)

selenium webdriver学习(五)------------iframe的处理 博客分类: Selenium-webdriver 如何定位frame中元素 有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没有任何问题.这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一.如果你在一个default content中查找一个在iframe中的元素,那肯定是找不到的.反之你在一个iframe中查找另一个iframe元