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")

# 再找到其下面的 iframe2(id =f2)

driver.switch_to_frame("f2")

# 下面就可以正常的操作元素了

driver.find_element_by_id("xx").click()

例:要求定位id="TeacherTxt"

<frame src="" id="index_main" name="main" scrolling="Yes" noresize="noresize">

<iframe id="Editor1" src="" frameborder="0" scrolling="no" >

<iframe id="eWebEditor" width="100%" height="100%" scrolling="yes" frameborder="0" src="">

<input type="text" id="TeacherTxt" name="Teacher" size="12" maxlength="12" >

</iframe>

</iframe>

</iframe>

代码如下:

driver.switch_to_frame("inden_main")

driver.switch_to_frame("Editor1")

driver.switch_to_frame("eEebEditor")

driver.find_element_by_id("TeacherTxt").send_keys(‘tester‘)

注:若页面中只有一个iframe且这个iframe为js加载的,那么只需要switch_to_frame(‘id’)即可

---------------------------------------------------------------------------------------------------------------------------------

有可能嵌套的不是框架,而是窗口,还有针对窗口的方法:switch_to_window

用法与switch_to_frame 相同:

driver.switch_to_window("windowName")

时间: 2024-12-26 15:46:39

python+selenium如何定位多层iframe中元素的相关文章

Selenium多层级的iframe中元素的定位

很多时候我们遇到多层级的iframe就会想各种方法去获取iframe中的元素,但其实很简单就可以做到的,就是一级一级获取就可以了,获取至你需要的那个层级即可,下面看下实际的案例:(转) <frame src="" id="index_main" name="main" scrolling="Yes" noresize="noresize"> <iframe id="Editor1

python+selenium遍历某一个标签中的内容

一.python+selenium遍历某一个标签中的内容 举个例子:我要获取列表标签<li></li>的内容 根据python+selenium定位到列表整体,使用for循环获取列表文本:可用于校验列表是否存在你需要的文本内容 1.获取内容不包含嵌套层列表 给出代码: from selenium import webdriver import time d = webdriver.Chrome() d.maximize_window() # 窗口最大化###登录某网站 d.get(

解析Jquery取得iframe中元素的几种方法

DOM方法:父窗口操作IFRAME: ? 1 window.frames["iframeSon"].document IFRAME操作父窗口: ? 1 window.parent.document jquery方法: 在父窗口中操作 选中IFRAME中的所有输入框: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25  $(window.frames["iframeSon"].doc

Jquery取得iframe中元素的几种方法(转载)

iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作 DOM方法:父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.document jquery方法:在父窗口中操作 选中IFRAME中的所有输入框: $(window.frames["iframeSon"].document).find(":text&quo

Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID

query取得iframe中元素的几种方法 在iframe子页面获取父页面元素代码如下: $('#objId', parent.document);// 搞定... 在父页面 获取iframe子页面的元素代码如下: $("#objid",document.frames('iframename').document) 显示iframe中body元素的内容. $(document.getElementById('iframeId').contentWindow.document.body)

jQuery判断iframe中元素是否存在的方法

jQuery判断iframe中元素是否存在的方法,需要的朋友可以参考一下 .代码   if($(window.frames["iframepage"].document).find('.l-grid-row-cell').length > 0){ alert(1); }else{ alert(2); } 判断id为iframepage的iframe中css为1-grid-row-cell的元素是否存在.前端UI分享 jQuery判断iframe中元素是否存在的方法

python selenium xpath定位时使用变量

driver.find_element_by_xpath(input[@id = "kw"]) 上面的代码,相信很多学习selenium + python 的朋友都很熟悉,就是定位百度首页搜索框的代码,如果我们想把"kw",用一个变量来表示该怎么操作呢? 目前,我知道的有两种方法,如下,是定位百度搜索框,点击搜索的代码,在XPath定位的过程中,用了变量: # encoding:utf-8 from selenium import webdriver import

Jquery取得iframe中元素的几种方法

在iframe子页面获取父页面元素 代码如下: $('#objId', parent.document);// 搞定... 在父页面 获取iframe子页面的元素代码如下: $("#objid",document.frames('iframename').document) $(document.getElementById('iframeId').contentWindow.document.body).html()  显示iframe中body元素的内容. $("#tes

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

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