python selenium中遇到的两个bug(刚入门,勿喷)

在使用Python的Selenium库进行自动化测试时,遇到了页面元素定位失败的问题,原因是页面未完全加载。通过分析,确定了问题在于页面翻页后保持在底部,导致上方元素未加载。为了解决这个问题,采用了JavaScript执行滚动到页面顶部的命令,使得元素得以加载。同时,也提醒注意ChromeDriver与Chrome浏览器版本匹配的重要性,不匹配可能会导致定位错误。
摘要由CSDN通过智能技术生成

项目场景:

使用python selenium进行浏览器操作,使用click()进行翻页,翻完之后页面处于最下端


问题描述:

提示:这里描述项目中遇到的问题:
例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据
APP 中接收数据代码:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"xbcdwdw"}
  (Session info: chrome=98.0.4758.102)


定位语句经过等待后报错,无法找到相应元素


原因分析:

提示:这里填写问题的分析:
例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Handler.sendMessage(),其中 obtainMessage 方式当数据量过大时,由于 MessageQuene 大小也有限,所以当 message 处理不及时时,会造成先传的数据被覆盖,进而导致数据丢失。

在很特殊的情况下,当页面翻页之后依然在最下端,上面的元素可能并未载入browser,也就无法完成定位,这个时候很明显的表现是手动定位看得见的地方是可以的,但上部分是不行的,这是由于网页未完成加载的缘故


解决方案:

提示:这里填写该问题的具体解决方案:
例如:新建一个 Message 对象,并将读取到的数据存入 Message,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();换成 mHandler.sendMessage()。

可以直接将浏览器页面向上滑动,在selenium并没有这样的操作,但可以使用js语句来实现,具体代码如下:

js = "window.scrollTo(0,0)"
#browser是我的chromedriver名称
browser.execute_script(js)

当页面滑到最上面的时候,因为元素被载入,所以定位语句也就不会再报错了

另一个bug是,当你发现无论你怎么使用find——element定位时,它都会输出一个非常奇怪的小数,而且还没有context时,恭喜,你的chromedriver版本不对,请根据自己的chrome浏览器版本和selenium版本下载对应的chromedriver(这个是真的烦,我才刚学,鬼知道它输出是什么样的。。。。切记切记,如果别人完整的程序都没办法定位,去下对应版本吧亲)

下面是我在pycharm的安装包管理器翻到的

网址:ChromeDriver - WebDriver for Chrome - Downloads(需要魔法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值