当前位置: 首页 > news >正文

福建省亿力电力建设有限公司网站企业公示信息查询系统 江苏

福建省亿力电力建设有限公司网站,企业公示信息查询系统 江苏,南昌百度快速排名优化,flash网站设计欣赏在自动化UI测试过程中常常会在元素定位阶段就踩坑,碰到困扰已久的问题。 以下是个人整理元素定位报错原因和解决方法。 踩坑一:StaleElementReferenceException selenium.common.exceptions.StaleElementReferenceException: Message: stale element re…

在自动化UI测试过程中常常会在元素定位阶段就踩坑,碰到困扰已久的问题。 以下是个人整理元素定位报错原因和解决方法。

踩坑一:StaleElementReferenceException

selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

异常原因: 意思是,引用的元素已过期。原因是页面刷新了,此时当然找不到之前页面的元素,就算是后退回来的页面也是不一样的。

在编写脚本时一直报这个错,使用显示等待都不行,在一顿百度操作后才知道是元素被刷新了

我们发现,仅仅是刷新了一下页面,两次的element id是不同的,这就说明这是两个不同的元素,如果用之前的element,自然会报错

原因很明显,你用别人的身份证id去找现在的人,哪怕这两个人长的很像,他也会告诉你,对不起,你找错人啦。

解决方法:

有时我们无法避免,不确定什么时候元素就会被刷新。页面刷新后重新获取元素的思路不变,这时可以使用python的异常处理语句:try…except…,异常出现时重新执行,关键代码如下

 如下图:我在实际工作当中编写脚本时使用异常try捕获异常后,页面刷新后重新获取元素,可以成功找到元素了

踩坑二:ElementClickInterceptedException(元素点击交互异常)

具体报错:selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted is not clickable at point (1421, 283). Other element would receive the click:

E (Session info: chrome=104.0.5112.102)

意思是,元素定位相互覆盖,元素已经找到,但是无法点击

解决方法:

方法一:使用强制等待,但是每次都有类似的元素无法点击使用强制等待的话会延长脚本执行时间

time.sleep()    

前言:之前便遇到过很多次该问题的报错,就没有管它,但是随着越来越多的元素报该错,每次使用强制等待会大大延长脚本的执行时间,于是便网上找各种方法解决该问题,最终发现是自己使用显示等待的方法错了

如下是显示等待的用法和区别

方法二:显性等待

element_to_be_clickable--元素是否可点击

vibility of element_ located--元素是否可见

presence_of_element_located--元素是否存在

如上:三种等待方法,最开始我一直使用的是presence_of_element_located,判断元素是否存在,最终还是报错,提示元素元素点击拦截异常

element_to_be_clickable--等待元素出现可以点击,便可以元素定位成功

需要先导包:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
复制代码
element = WebDriverWait(self.browser, 5).until(EC.element_to_be_clickable((By.XPATH, "//input[@placeholder='请输入会员手机号']")))
element.clcik()
复制代码

方法三:使用JS点击

然而有时即使已经显式等待了,却仍然会报错: ElementClickInterceptedException,这多少有点奇怪,为什么 webdriver 有时就是无法点击,我不知道,也许这和他首先执行的一些验证检查有关,反正就在这一刻,它不给你点

代码如下:

element = self.browser.find_element(By.XPATH, "(//span[@class='el-checkbox__inner'])[4]")
self.browser.execute_script("arguments[0].click();", element)
复制代码

 

这是通过 JavaScript 完成的点击,js可以避开一些校验

👆以上便是在编写selenium自动化时元素定位时踩的坑,以此分享防止踩坑

http://www.yayakq.cn/news/221010/

相关文章:

  • 奥远网站建设流程免费网课
  • 兰西网站建设湖北短视频seo
  • 定制网站 北京建设银行个人查询余额
  • 太原企业网站建设开发公司施工管理事业部沟通协调类面试题
  • 怎么做点击图片进网站朝阳区seo搜索引擎优化介绍
  • 临沂网站建广州餐饮管理有限公司
  • 江西做网站找谁提升学历咨询
  • 网站开发设计师岗位职责纯flash网站欣赏
  • 聊城市公司网站建站海口h5建站模板
  • 建设工程信息在什么网站发布做快递单网站
  • wordpress网站案例深圳云购网站制作
  • 网站建设如何给网址设置链接美食网站首页怎么做
  • 网站原型图展示律师事务所 网站模板
  • 我国空间站建造上海城乡建设网站首页
  • 设计网站作品欣赏有那些网站wordpress本地头像
  • 网站制作济南网站做好后
  • 书籍管理网站建设需求文档做网站都需要会什么软件
  • 做网站个网站要多少钱wordpress 小说模块
  • 成都捕鱼网站建设建设银行官方网首页
  • wap 网站 源码天津高端网站建设
  • 网站商城功能模块企业门户系统
  • 小公司网站维护不需要验证码的注册网站
  • 企业网站一定要从建立网站开始国外手表网站
  • 大兴安岭做网站如何上传网站到凡科网
  • 网站开发中的服务抽离电子商务网站建设规划报告
  • 吉林省建设 安全 网站怀宁县住房与城乡建设局网站
  • 人工智能平台东莞网站建设白帽seo
  • 用flash做的经典网站医院建设网站意义
  • 2019年开公司做网站可以吗阿里云如何搭建网站
  • 网站建设的价值体现在哪网上制作网站