selenium中关于iframe元素定位的问题

python+selenium找不到元素问题——pageObject设计模式实现定位iframe框架中的元素定位没有id和name的iframe 找不到元素的原因大致有两点: 1. 页面没有加载出来,找不到定位元素,设置等待时间即可; 2. 定位元素iframe框架内,所以定位不到。 firebug中如下图显示为Top Window的话,就是可以直接定位元素 firebug中如下图显示为iframe的话,该元素就是在iframe框架中,需要使用switch_to.frame()方法来切换到iframe框架内再定位。 ... 阅读详情

selenium中关于iframe元素定位的问题

selenium中关于iframe元素定位的问题

最近在学习selenium的元素定位,接触到iframe后,遇到元素定位失败的情况,本文主要针对什么情况需要进入iframe,以及什么时候需要跳出iframe进行总结。比较浅显,纯属个人学习见解,不正之处可指教。
在这里插入图片描述
如图所示,脚本需要完成的动作是:
进入调车列表->点击【预约用车】按钮–>输入用车条件后点击【提交】->【申请用车】->【确定】->【关闭】

在各个按钮和界面中间,有不同的iframe。想要操作以上按钮,就必须跳入指定的iframe中进行元素定位,否则就会报错提示元素定位失败。

脚本报错时的原因分析

我因为刚学习selenium,只知道元素在iframe内的,要跳转进入iframe后才能对元素进行定位,并没有意识到,元素定位后还需要跳出iframe。所以脚本一直报错定位不到元素。以下为错误脚本编写示例:
driver.switch_to.frame(“iframe0”)
time.sleep(1)
driver.find_element_by_id(“bt0”)

driver.switch_to.frame(“iframe1”)
time.sleep(1)
driver.find_element_by_id(“bt1”)

driver.switch_to.frame(“iframe2”)
time.sleep(1)
driver.find_element_by_id(“bt2”)
driver.find_element_by_id(“bt3”)
driver.find_element_by_id(“bt4”)

脚本运行时,在driver.switch_to.frame(iframe2)这句提示定位不到iframe2

原因是因为,iframe2和iframe1是平级的,我前面已经跳转进入了iframe1,不能直接定位到iframe2,如果iframe2是iframe1的子级,就可以直接定位。
因此,我想定位到iframe2,就需要先从iframe1中跳到父级iframe0,可以使用的方法有以下两种:
#方法一:退出到父级
driver.switch_to.parent_frame()

#方法二:退出全部的frame嵌套层,回到主界面
driver.switch_to.default_content()
我这个场景因为iframe1和iframe2都是0的子级。因此使用退出到父级的方式直接再进入iframe2就可以了。
如果我使用退出全部frame的方法,那么定位iframe2之前,需要先进入iframe0才可以。

正确的脚本示例

driver.switch_to.frame(“iframe0”)
time.sleep(1)
driver.find_element_by_id(“bt0”)

driver.switch_to.frame(“iframe1”)
time.sleep(1)
driver.find_element_by_id(“bt1”)

driver.switch_to.parent_frame()

driver.switch_to.frame(“iframe2”)
time.sleep(1)
driver.find_element_by_id(“bt2”)
driver.find_element_by_id(“bt3”)
driver.find_element_by_id(“bt4”)

RPA手把手——Selenium 由于 iframe 定位不到元素 艺赛旗 RPA9.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=line1 场景分析 使用 Selenium 来模拟登陆 QQ 邮箱时,发现通过diver.find_element_by_id(‘u’)无法定位到账号输入框,通过 ctrl+u 查看源码分析,发现账号输入窗口是在 iframe 中,窗口相关标签并不在最初 dom ... 阅读详情

相关推荐

【python+seleniumiframe定位报no such element,解决方法总结

在做自动化用例写作的过程中,发现使用 xpath无法定位到页面元素, 报如下错误 需要定位的页面如下 很多的页面都是这样的结构,实际需要定位元素例如查询按钮、新增按钮之类的业务控件都是内嵌在框架页面中,而我们用selenium定位打开的页面只能定位到最外层的页面内而嵌套的页面是无法访问的,要想访问嵌套的页面内的元素必须先切换到iframe内才能进行定位,所以第一步要解决的就是定位iframe,然后通过driver.switch_to.frame(iframe)进行切换 定位iframe有三大类六种方

小衫虎 1907

iOS 下,iframe 页面中的 position:fixed 定位无效的解决办法

iOS 下,iframe 页面中的 position:fixed 定位无效的解决办法

codeRainbow的博客 752

selenium元素定位正确但是操作失败,6种解决办法全稿定

selenium元素定位正确但是操作失败的原因无外乎以下4种: 一、页面没加载好 解决方法:添加等待方法,如: time.sleep() 二、页面提交需要等待给数据后台 解决方法:添加等待方法,如: time.sleep() 三、浏览器没有以最大化方式打开,导致元素被隐藏,定位不到 解决方法: 将网页最大化:driver.maximize_window() 如果屏幕比例固定,分辨率有限,通过网页最大化也没办法解决的话,可以通过执行JS方法来实现。 browser.execute_script

qq_48811377的博客 2892

iframe子页面position的fixed

iframe子页面position的固定定位

香蕉猪的专栏 1万+

ios下iframe中fixed定位失效 完美替代方案 并可在iframe里做上拉加载这种操作

======================================2019-1-23更新========================================= 楼主这里要纠正一个问题 下面的干货 再实测的时候发现 底部会出现大概4像素的白边 这个东西 楼主找了很久 最后 只能 笃定 是 因为 css 的calc的计算 用百分比减去px的时候 会出现误差 就...

gaoqiang1112的博客 2367

Selenium遇到iframe,直接定位元素no such element问题

Selenium遇到iframe,直接定位元素no such element问题 这是因为 Selenium 只知道顶层文档中的元素。 WebDriver 提供了三种切换到帧的方法。 a、使用 WebElement b、使用 name 或 id c、使用索引 操作完成退出iframe回到上一层html

fenghuashao的博客 1955

Selenium定位不到元素问题--iframe准确定位元素

废话不多说,直接开干! 原因是今天上午找了半天,定位不到selenium元素,一直纠结中,好在之前也遇到类似情况!细细分析是iframe问题! 如图: 直接上代码 ## 切换Iframe driver.switch_to.frame('nest-other-iframe') time.sleep(3) # 转换方式点击 driver.find_element_by_xpath('//*[@id="orderMQueryForm_add_billType"]').click() time.sleep

weixin_37254196的博客 441

解决iframeselenium定位元素的干扰问题

解决iframeselenium定位元素的干扰问题场景还原解决思路 场景还原 我们在通过selenium的find_element方法定位页面元素的时候会发现一个问题,我的定位条件没有问题定位元素也是非隐藏元素,可代码执行时总提示Message: no such element: Unable to locate element,百思不得其解时,最后发现元素嵌套在了iframe当中,无法直接定位。 这个时候我们通常的解决办法就是,查看元素所在的iframe,然后调用selenium的switch_to

qq_40788412的博客 694

多层级iframe时,selenium定位页面元素失败问题总结

昨晚在用selenium写网易相册首页(http://photo.163.com)的登录自动化代码时,发现怎么也定位不到登录框的用户名元素,如下图: 代码如下: import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; impor

Hanweijin_Kevin的博客 1329

Selenium定位iframe标签中元素问题

最近做自动化遇到了iframe问题,正好趁着现在解决一下,网页源代码是这样的 #进入iframe方法 iframe = driver.find_element_by_xpath(’//*[@id=“mini-3$body$3”]/iframe’) #切换到iframe里 driver.switch_to.frame(iframe) 接下来我们进入之后要退出才能在重新定位其他iframe中的东西,如果是在同一个iframe中可以不退出继续定位 代码 driver.switch_to_default_co

langyichen的博客 397

Python selenium解决弹框中元素定位问题iframeframeframeset

在自动化测试过程中,经常会遇到填写的定位应该是正确的啊,为什么就是定位不到呢?通过浏览器工具检查定位也没问题呢? 首先检查填写定位内容是否错误,可通过浏览器检查来验证,做法如下,下面的代码是我的一个简单的例子。 # 一个简单的demo,可以拿来简单跑一下 from selenium import webdriver import time driver = webdriver.Chrom...

songlh1234的博客 3054

selenium自动化测试多层iframe 嵌套定位元素问题

自己想搭建一个自动填单的框架,就看了看Python3.7.4+selenium 其实selenium定位很简单,主要是前端页面如果有iframe,就得使用switch_to.frame() 先切入iframe 括号里可以填写iframe的index、id、name 第一层一般都比较好切入 我遇到了一个问题 页面结构如下: 我进入第一层iframe之后,做了一个click的操作,接...

u012404532的博客 2277

python + selenium 操作浏览器 常用操作、常见问题及解决 [ 元素定位 CSS选择器 无法定位元素 iframe ]

selenium是一个用以操作浏览器的库,常被应用于自动化测试和爬虫。 先把相关的文档放上来:https://selenium-python.readthedocs.io/ 安装及入门 模块的安装就不赘述了,但安装完模块以后需要同时安装对应浏览器的驱动,并放到python的文件目录下,才能正常的打开浏览器。 具体驱动的安装在上面的文档中可以找到。 元素定位 selenium通过正确打开...

weixin_41563274的博客 2938

关于selenium定位不到元素问题(页面结构为iframeiframe 跳转至内嵌网页)

关于selenium定位iframe问题,可以使用开发者工具

weixin_63597751的博客 816

Selenium元素定位失败(iframe嵌套网页)

元素定位失败 【163网易云邮箱】登录实例: from selenium import webdriver import time driver = webdriver.Chrome() driver.get("http://mail.163.com/") driver.find_element_by_name("email").send_keys("C18325528709") time.sleep(3) driver.find_element_by_name("password").send_.

qq_50729944的博客 8621

selenium webdriver 定位元素定位不到 原因之一该元素处于iframe

selenium webdriver 在定位方式没有问题的情况下仍然定位不到该元素,可以查看页面源代码查看该元素是否在iframe中,如果在iframe中通过switchTo().frame(int arg0),先选中该frame定位元素即可解决问题

670

元素定位不到问题1-----selenium,切换frameiframe

最近遇到一个问题元素怎么都定位不到,原因是有iframe标签,利用switch_to.frame()方法跳入frame,然后再进行定位。 #switch_to.frame()跳入frame self.driver.switch_to.frame("login_frame") 在过程中还遇到一个问题就是,在Chrome浏览器中运行没有问题,但是在firefox浏览器中却报错了,原因是因为没有...

miaomiao_zhang的博客 1551

自动化测试之那些遇到的坑,Selenium定位不到指定元素原因之iframe

自动化测试之那些遇到的坑 1. Selenium定位不到指定元素原因之iframe(unable to locate element) 项目原因:在模拟打开网易云音乐网站搜索“以为”并播放第一首歌时,发现播放不了。 sublime报错unable to locate element无法定位元素。 从上一个页面转到下一个页面时点击指定元素无反应,原错误代码如下: from selenium import webdriver from time import sleep driver = webdriver.

weixin_44200553的博客 1473
上一篇: pip安装的时候出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after conne
下一篇: appium环境安装
summer_learn
码龄7年 17粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值