selenium问题之定位不到元素(NoSuchElementException)
在使用selenium+爬虫的时候,经常会遇到一个问题,就是NoSuchElementException,定位不到元素的问题
一,打开了新页面,一般selenium点击新链接跳转打开了一个新页面,那么定位不到元素就很正常了,这种情况一般我们使用driver.get(url)来代替click(),dirver.get(url)就不会打开信的界面,而是在原来的浏览器上刷新了页面
二,frame,如果说一个页面里有frame或者iframe的话,也会定位不到元素,这种我们要switch_to.frame(),先跳转到要定位的元素所在的frame上,才能进一步定位
三,动态的id或者xpath,这种很隐蔽,我之前使用driver.find_element_by_xpath()一直定位不到元素,后来发现xpath是动态的,最后使用了find_element_by_css_selector定位到了,还有的情况是xpath绝对定位不到,可以使用xpah的相对定位。/html/body/div[2]/div[1]/div/div[3]/a[7]这是绝对定位,如果中间的元素有变动或者隐藏了,那么它就没法定位到。r'//*[@id ='ul' ]/a[7]'这个是相对定位,结合了id定位,这种定位就比较精准。
四,对话框的话,分为两大类,第一类就是一个隐藏的div绑定的click点击事件,这种情况直接用id或者name定位就可以了。第二类是alert或者confirm这种windows对话框,这种对话框,要通过switch_to_alert.accept()或者swicth_to_alert.dismiss()这种处理。
五,等待时间不够,页面还没加载出来。
下面举个例子,selenium模拟登陆百度登陆对话框
# coding=utf-8
from selenium import webdriver
import time obj = webdriver.Firefox()
obj.get('https://www.baidu.com/')
obj.find_element_by_xpath(r'//*[@id="u1"]/a[7]').click()
time.sleep(1)
obj.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click()
# obj.find_element_by_class_name('tang-content').find_element_by_name('userName').send_keys('1712256304')
obj.find_element_by_id('TANGRAM__PSP_10__userName').send_keys('12341241')
obj.find_element_by_id('TANGRAM__PSP_10__password').send_keys('123423')
obj.find_element_by_id('TANGRAM__PSP_10__submit').click()
selenium问题之定位不到元素(NoSuchElementException)的更多相关文章
- selenium自动化之定位多个元素
前面我们讲的都是如何定位单个元素,下面讲下怎么去定位多个元素,并且输出文本. 以百度为例:获取标红的这一组元素的文本 这里我用到的是xpath来定位的://div[@id="u1" ...
- Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)
在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException ...
- Python3 Selenium定位不到元素常见原因及解决办法
Python3 Selenium定位不到元素常见原因及解决办法 一.问题描述 在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况: 报错信息: no such e ...
- selenium使用笔记(三)——元素定位
selenium进行自动化测试的一个很重要的东西那就是元素定位,如果元素都没法定位就无法操作它,也就无法进行自动化测试了.网上对于元素定位有很多的介绍,很详细很详细的,但是依然有很多新手总是会遇到无法 ...
- 用XPath精确定位节点元素&selenium使用Xpath定位之完整篇
在利用XSL进行转换的过程中,匹配的概念非常重要.在模板声明语句 xsl:template match = ""和模板应用语句xsl:apply-templates select ...
- Python3.x:Selenium中的webdriver进行页面元素定位
Python3.x:Selenium中的webdriver进行页面元素定位 页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等.webdriver ...
- selenium定位不到元素
selenium定位不到元素时,网上大部分查到都是iFrame的切换问题,然后是多窗口.句柄的处理问题, 在初学是遇到定位不到元素,一直在找上面的问题,发现都不是上面的问题, 后来才发现是页面刷新的问 ...
- selenium第三课(selenium八种定位页面元素方法)
selenium webdriver进行元素定位时,通过seleniumAPI官方介绍,获取页面元素的方式一共有以下八种方式,现按照常用→不常用的顺序分别介绍一下. 官方api地址:https://s ...
- Selenium高亮显示定位到的元素
在调试Selenium脚本中,有时因为操作太快或操作不明显而不清楚是否定位到了正确的元素.我们可用通过执行js为定位到的元素添加样式,来高亮显示定位到的元素. 在Selenim Webdriver中, ...
随机推荐
- Python笔记(十九)_继承
继承 继承可以把父类的所有功能都直接拿过来,这样就不必从零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写 多重继承 通过多重继承,一个子类就可以同时获得多个父类的所有功能 > ...
- CentOS删除Applications中的菜单项
有时候会错误的安装一些软件,可能安装被不成功,但是在左上角的Applications菜单中还是会显示出来,让人很不爽. 现在介绍一个删除掉CentOS Applications中菜单项的方法: 1.安 ...
- [CF643E]Bear and Destroying Subtrees(期望,忽略误差)
Description: 给你一棵初始只有根为1的树 两种操作 1 x 表示加入一个新点以 x为父亲 2 x 表示以 x 为根的子树期望最深深度 每条边都有 \(\frac{1}{ ...
- [BZOJ 3307]Cow Politics (LCA)
[BZOJ 3307]Cow Politics (LCA) 题面 给出一棵N个点的树,树上每个节点都有颜色.对于每种颜色,求该颜色距离最远的两个点之间的距离.N≤200000 分析 显然对于每种颜色建 ...
- luoguP3391[模板]文艺平衡树(Splay) 题解
链接一下题目:luoguP3391[模板]文艺平衡树(Splay) 平衡树解析 这里的Splay维护的显然不再是权值排序 现在按照的是序列中的编号排序(不过在这道题目里面就是权值诶...) 那么,继续 ...
- python开发之路-day02
一.数据类型 1 什么是数据? name='sunkedong'#字符串类型 age=24 #整型 date=2017.9#浮点型 dic={'name':'sunkedong','age':16}# ...
- 4、numpy——创建数组
1.普通创建——np.array() 创建数组最简单的方法就是使用array函数.它接收一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的Numpy数组. import numpy as ...
- #python# 使用代理和不使用代理对比
import urllib.request url='http://httpbin.org/ip' #不使用代理 response1=urllib.request.urlopen(url) #设置代理 ...
- NEO4J -模糊查询
模糊查询 match(emp) where emp.name =~'.*haha.*' return emp 现有节点创建关系 MATCH (cust:Customer),(cc:CreditCard ...
- dubbo构建应用
1.Dubbo介绍 Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成. 2.Dubbo原理 是不是看着 ...