Other element would receive the click

bug的原因起源一位微软大佬开发人员,要不估计我也不会这么早碰到这个bug,还是很感谢大佬的。

大概其因就是合作开发一个项目,当时爬虫接触的不多,但是基本的爬虫代码是没问题的,所以就建议发起方,爬虫这个模块由微软大佬负责,我主要负责web系统,后面与爬虫实现交互。

大佬同意了,我也满心欢喜的写起web来,忽一日,大佬微信发我一个代码文件,说某个页面的爬虫写好了,让我处理下数据库的操作,打开代码我就傻了,基本上就是往下翻页,拿取数据,其中的异常、登录、验证码啥的全部没做。说好的你全权负责爬虫呢。

无奈自己举起了爬虫这面大旗,但是里面部分代码还是用的大佬的,我只把这部分代码改成了面向对象的方式。系统有了雏形后开始试跑。

因为大佬给的代码真的不太敢恭维,因为连页面加载等待都没写,往下翻页也是固定写了个数字,导致刷刷刷往下翻页的挺快,实际上数据却没加载出来,虽然你代码里写了让翻100次,实际有效的翻页也就20次,数据当然取不全了。

另外页面全部加载出来有部分数据是折叠的,要循环再循环的点击展开,看着没问题,实际运行却发现总是有数据展不开的问题,百度了下才就是以上的bug:Other element would receive the click

网友还挺给力的给出了几个解决方案,并且可行,欣喜:

1
2
3
4
5
6
7
8
9
#方法1
button.send_keys("\n")

#方法2
from selenium.webdriver.common.keys import Keys
button.send_keys(Keys.SPACE)

#方法3
driver.execute_script("arguments[0].click();", button)

对,就是讲click改成了以上三种方法,完美解决。

我以上的吐糟并不是说大佬水平不不够高,我相信大佬毕竟在大厂,接手的项目复杂度肯定比这个项目多太多,但是就拿到收的代码来讲,只能说,大佬还是不太负责的。不过也感谢大佬的不负责,让自己在爬虫方面可以有成长的地方。