selenium-元素无法定位解决办法
有时会出现元素定位失败的情况,以百度首页为例,定位输入框,报错如下:
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id='wd']
报错提示没有该元素,无法定位!
此处列举几个常见的,元素无法定位的情况,简单级。
1.属性名称与属性填写错误
因为操作时,为了提高效率或者说偷懒,经常将已写好同类命令的代码,复制粘贴,用于新的命令,有时就忘了修改,比如上一个元素定位是用 id ,这一次定位是用 name('wd'),复制粘贴后,find_element_by_id('wd'),于是定位失败。
2.点击速度过快,页面还没加载出来就点击页面上元素
打开一个新的页面时,可能页面还没加载出来,此时已经进行下一步操作,元素定位,于是报错。
此时需要设置等待时间
import time
time.sleep(2) #强制固定等待2秒
3.动态 id 无法定位元素
比如淘宝web端登录,账号输入框,id就是动态的,每次打开都不同。
此时可以使用 css 定位或 xpath 定位
4.元素在 iframe 里导致元素定位失败
当元素在 frame 里,此时打开网页直接使用 id/name/xpath 是无法定位元素的。
以qq邮箱web端登录的账号输入框为例,查看元素显示是这样的……
……
<iframe id="login_frame" name="login_frame" ……>
……
<input type="text" class="inputstyle" id="u" name="u" value="" tabindex="1">
因为这个输入框在 iframe id="login_frame" 这个frame 里,此时直接 ele = browser.find_element_by_name('u') 会显示定位失败。
需要先定位frame,再定位里面的元素。
browser.switch_to.frame('login_frame')
browser.find_element_by_name('u')
切记,在 frame 操作完成后,要切换出去
driver.switch_to.default_content()
5.不在同一个 frame 里
有时,一个页面内有多个 frame,于是,比如左边有一栏left_frame,右边还有一栏right_frame,当你在某个frame里,就无法直接定位其他frame里的元素。
比如,打开页面后,需要定位左栏的元素:
browser.switch_to.frame('left_frame') #切换进入左栏
browser.find_element_by_name('u') #此时只能定位左栏的元素
但是之后又需要定位右栏的元素:
driver.switch_to.default_content() #回到默认的content,此时只能定位页面上非frame内的元素
driver.switch_to.frame('right_frame') #切换进入右栏
browser.find_element_by_name('u') #此时只能定位右栏的元素
最后回到默认content,就可以回到页面默认内容,继续操作了:
driver.switch_to.default_content()
【豆科基因组】利马豆/洋扁豆Lima bean(Phaseolus lunatus L.)基因组2021NC
工作流大大批量报错
django中request参数
java笔记(二)----详解装箱与拆箱
java笔记(一)----基础知识
Navicat 快捷键
ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率
安全测试:BurpSuite 学习使用教程(转)
耗电量测试(转)
- 最新文章
-
知乎爬虫之1:开篇序言(附赠爬出的数据库)
Mac OS Big Sur出现Read-only file system解决办法
分布式事务
HashMap循环遍历方式及其性能对比
ArrayList和LinkedList的几种循环遍历方式及性能对比分析
双机热备方案
编辑pdf文件,发送邮件
fastadmin 导出表格专利号被科学计算法
php 生成字体图片
理解 pod 的删除过程
- 热门文章
-
利用SMRTlink进行甲基化位点的检测
Endnote:修改参考文献的作者author名称的显示数目
Python pandas merge不能根据列名合并两个数据框(Key Error)?
awk多文件处理时的分隔符?
【豆科基因组】大豆(Soybean, Glycine max)泛基因组2020Cell
【豆科基因组】大豆(Soybean, Glycine max)经典文章梳理2010-2020
【豆科基因组】大豆适应性位点GWAS分析 [转载]
【豆科基因组】木豆Pigeonpea (Cajanus cajan) 292个自然群体重测序2017NG
【豆科基因组】普通豆/菜豆/四季豆Common bean (Phaseolus vulgaris L.) 683个自然群体重测序2020NG
【豆科基因组】鹰嘴豆Chickpea (Cicer arietinum L.)429个自然群体重测序2019NG