selenium-元素无法定位解决办法
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()
selenium-元素无法定位解决办法的更多相关文章
- python+selenium+bs4爬取百度文库内文字 && selenium 元素可以定位到,但是无法点击问题 && pycharm多行缩进、左移
先说一下可能用到的一些python知识 一.python中使用的是unicode编码, 而日常文本使用各类编码如:gbk utf-8 等等所以使用python进行文字读写操作时候经常会出现各种错误, ...
- python+selenium 元素被定位到而且click()也提示执行成功,但是页面就是没有变化和跳转。
python+selenium 元素被定位到而且click()也提示执行成功,但是页面就是没有变化和跳转. 如果多次定位和click(),有时候会跳转. 我遇到很多次就是很郁闷,有人说,操作太快的,页 ...
- IOS8下,百度地图无法定位解决办法
通过在论坛中搜索,找到解决办法,我只是论坛的搬运工.分享如下: 1.在info.plist中加入: NSLocationAlwaysUsageDescription=YES NSLocatio ...
- 子元素的margin-top影响父元素原因和解决办法
这个问题会出现在所有浏览器当中,原因是css2.1盒子模型中规定, In this specification, the expression collapsing margins means tha ...
- 移动端开发底部元素margin-bottom失效解决办法
一.情景 记得之前开发一个微信端页面时,发现页面底部元素margin-bottom在ios下失效,在安卓内正常...... 1.safari浏览器内页面底部元素设置margin-bottom失效: 2 ...
- selenium 元素可以定位到,但是无法点击问题
报错1: selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (82, ...
- Selenium学习(三)Selenium总是崩溃的解决办法
在使用selenium打开浏览器总是崩溃,最近查资料获得可行的解决办法: import sys from selenium import webdriver p = __import__('selen ...
- selenium元素单击不稳定解决方法
selenium自动化测试过程中,经常会发现某一元素单击,很不稳定,有时候执行了点击没有反映. 以下总结两种解决方法:都是通过js注入的方式去点击. 1.F12查一看,要点击的按钮,或连接,有没有on ...
- python+selenium滑动式验证码解决办法
from selenium.webdriver import ActionChains action = ActionChains(driver) source=driver.find_element ...
- HTML兼容问题及解决办法
标准浏览器子元素不会撑开父元素设置好的宽度,IE6下会的: <style> .box{ width:400px;} .left{ width:200px;height:300px;back ...
随机推荐
- 面试系列<5>——面向对象
面试系列--面向对象思想 一.三大特性 封装 利用抽象数据类型将数据和基于数据的操作封装在一起,使其成为一个不可分割的独立实体.数据被保护在抽象数据类型内部,尽可能地隐藏内部细节,只保留一些对外的接口 ...
- 前端实用程序包utils - 开发工作流(一)
写在前面 早年间有幸在Raychee哥门下当小弟,学到两把刷子.在编程路上,他的很多思想深深影响了我,比如笔者今天要分享的主题.在程序开发中,有个utils包,叫做实用程序包,程序员们会把项目中通用的 ...
- YII框架安装步骤(yii框架版本1.1.20,时间是2018/11)
0x01 首先中文官网下载https://www.yiichina.com/download 0x02 解压压缩包到www目录下(方便以后调试) 0x02-1 如果想看一下你的电脑是否能匹配yii框架 ...
- 记一次 .NET 医院CIS系统 内存溢出分析
一:背景 1. 讲故事 前几天有位朋友加wx求助说他的程序最近总是出现内存溢出,很崩溃,如下图: 和这位朋友聊下来,发现他也是搞医疗的,哈哈,.NET 在医疗方面还是很有市场的,不过对于内存方面出的问 ...
- Linux防火墙放行端口
添加放行端口 firewall-cmd --zone=public --add-port=端口号/tcp --permanent 重启防火墙 systemctl restart firewalld.s ...
- 解决Failed to execute goal se.eris:notnull-instrumenter-maven-plugin:0.6.8
https://blog.csdn.net/fanrenxiang/article/details/80864908 github拉起来的项目,jdk是11,而我电脑上的jdk是1.8.原因是jdk版 ...
- Mac SSH工具-Termius
全平台,功能强大 SSH连接.SFTP连接.端口转发.多设备同步 官方网站
- python模块一之faker模块
faker模块主要是用来创建伪数据,无需手动生成或者手写随机数来生成数据,可以利用faker完成伪造大量测试数据的工作 一.安装 pip install faker 二.使用 from faker i ...
- 01 CTF MISC 杂项 知识梳理
1.隐写术( steganograhy ) 将信息隐藏到信息载体,不让计划的接收者之外的人获取信息.近几年来,隐写术领域已经成为了信息安全的焦点.因为每个Web站点都依赖多媒体,如音频.视频和图像.隐 ...
- 2020BUAA 软工-结对作业
结对作业 项目 内容 北航2020软工 班级博客 作业要求 具体要求 1.在文章开头给出教学班级和可克隆的 GitHub 项目地址(例子如下).(1') 教学班级 005 项目地址 GitHub 2. ...