selenium 页面元素定位之iframe里面的元素定位(包括有无id、name的)

今天在写一个功能的脚本时,发现部分部分元素总是定位不了,看了下页面的html 发现元素原来在iframe里,这个使用iframe的id和name属性用switch_to_frame跳转后就可以定位了,但是发现部分iframe没有id 和 name,突然不知怎搞了,百度了下,发现下面这个文章不错!

-------------------------以下转自:http://blog.sina.com.cn/s/blog_68f262210101mcxp.html

最近正在进行webdriver的web级自动化测试代码的编写,遇到一个问题:页面有三个标签,单击一个标签打开一页,要对第二个标签打开的页面进行定位操作,可是总是定位不到。查看一下代码,发现这个标签打开的是一个新页面,在iframe中嵌套着呢,于是在网上搜了一下相关的定位方法。

    例如,现有HTML代码如下:

  1. main.html
  2. <</span>html>
  3. <</span>head>
  4. <</span>title>FrameTest</</span>title>
  5. </</span>head>
  6. <</span>body>
  7. <</span>div id = "id1">this is a div!</</span>div>
  8. <</span>iframe id = "frame1"  frameborder="0" scrolling="no" style="left:0;position:absolute;" src = "frame.html"></</span>iframe>
  9. </</span>body>
  10. </</span>html>
  11. frame.html
  12. <</span>html>
  13. <</span>head>
  14. <</span>title>this is a frame!</</span>title>
  15. </</span>head>
  16. <</span>body>
  17. <</span>div id = "div1">this is a div,too!</</span>div>
  18. <</span>label>input:</</span>label>
  19. <</span>input id = "input1"></</span>input>
  20. </</span>body>
  21. </</span>html>


1.iFrame有ID 或者 name的情况
//进入id="frame1"的frame中,定位id="div1"的div和id="input1"的输入框。
dr.switchTo().frame("frame1");
dr.findElement(By.id("div1"));
dr.findElement(By.id("input1"))

2.如果一个iFrame既没有id,也没有name,通用情况
// 定位frame位置,并选取frame
WebElement frame=driver.findElement(By.xpath( "/html/body/div[2]/div[8]/div[2]/div[3]/div/div[2]/div/iframe" ));
driver.switchTo().frame(frame);

3.跳出iFrame
//跳出frame,进入default content;重新定位id="id1"的div
dr.switchTo().defaultContent();
dr.findElement(By.id("id1"))

时间: 2024-12-18 13:43:20

selenium 页面元素定位之iframe里面的元素定位(包括有无id、name的)的相关文章

Selenium定位不到指定元素原因之iframe(unable to locate element)

浏览过程中,图片中的内容可能太小,无法看清,可以>右键>在新标签中打开 Outline 项目原因,需要用selenium实现模拟登陆.模拟上传文件,自然就需要模拟点击[上传]按钮: 模拟点击之前需要通过selenium提供的“方法”去定位到要点击的元素: 模拟登陆过程中,全程都可以定位到需要点击的元素,但登陆后需要定位点击[上传]按钮时问题来了: 元素明明在那放着,就是定位不到,这个问题困扰了一下午还没解决,最终走到了iframe这个一步,才得以解决. 什么是iframe 解决问题之前很有必要

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

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

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+python)_UI自动化04_定位iframe框架内元素

什么是iframe? iframe是HTML标签,作用是文档中的文档(即在当前 HTML 文档中嵌入另一个HTML文档),或者浮动的框架(FRAME).iframe元素会创建包含另外一个文档的内联框架(即行内框架). iframe框架内元素定位 selenium中定位iframe内元素,需先切换到iframe框架内,然后再进行元素定位,否则会报错找不到元素. 一.iframe常用切换 driver.switch_to_frame(iframe_element) # 切换至iframe drive

selenium自动化测试入门 定位frame和iframe中的元素对象

< frame> <iframe> 标签,浏览器会在标签中打开一个特定的页面窗口(框架),它在本窗口中嵌套进入一个网页,当用selenium定位页面元素的时候会遇到定位不到frame框架内的元素的问题. 定位frame中的元素前我们需要driver.switch_to.frame()切换到对应的frame中,执行操作后,要操作frame框架外的元素,需要通过driver.switch_to.default_content()切换回主文档页面. driver.switch_to.fr

python+selenium如何定位多层iframe中元素

在 web 应用中经常会出现 iframe 嵌套的应用,假设页面上有 A.B 两个 iframe,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B. iframe 中实际上是嵌入了另一个页面,而 webdriver 每次只能在一个页面识别,因此需要用 switch_to.frame 方法去获取 iframe 中嵌入的页面,对那个页面里的元素进行定位. 常用方法如下: # 先找到到 iframe1(id = f1) driver.switch_to_frame("f1&qu

selenium 中在 iframe 内的元素定位

有些时候 元素明明就在 但是通过什么方式定位都提示 定位不到元素 此时就要考虑元素是不是内嵌在iframe 中 对于内嵌在 ifra中的元素定位 首先定位到 iframe 元素 例如 iframe = drive.find...  这里只要能定位到iframe即可,用什么方式都可以 然后是进入到iframe 通过这个方式进入 driver.switch_to.frame() 原文地址:https://www.cnblogs.com/wulinmiao/p/11478261.html

selenium定位方法-iframe元素定位方法

在自动化测试中,如果无法定位到一个元素,那么最大的可能是定位的元素是在iframe框架中,iframe对象代表一个HTML的内联框架,在HTML中,iframe每出现一次,一个iframe对象就会被创建. 定位iframe框架,首先需要进入到iframe框架,再定位iframe框架的元素,定位iframe的方式分2种,一种是以ID的方式,一种是索引的方式 以ID的方式定位时代码如下: 进入到iframe中,定位元素 browser.switch_to.frame('ID') browser.fi

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

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