问题出在一个小小的点击事件上
我要操作的是一个可滚动的网课页面,我称之为初始页面
而我的逻辑是:先用selenium模拟鼠标滚动,通过class_name把可滚动页面的所有课程作为元素爬取进列表里(并且我写了个去重的方法)
for i in range(13):#课程设置为13是因为只需要滚动13次就能让13节课依次进入可视范围
web.execute_script("window.scrollBy(0,250);")
time.sleep(0.25)
classAA2=classAA2+web.find_elements_by_class_name("resource-left-2aDnK")
接着新建一个初始页面,并且慢慢滚动,根据列表的下标对之前爬取的课程元素进行点击
(由于它进入课程是在原来的标签页上完成的,为了让多节课程同时播放,我在for循环建立新的标签页并打开初始页面)
web.execute_script(f"window.open('{url}','_blank');")
web.switch_to.window(web.window_handles[-1])
然而,每次运行到第二次循环,即要点开第二节课的时候,总是会报click方法的错误
虽然这个程序因为chromedriver的版本问题偶尔报错,但主要报错在于selenium的click方法,应该是没有点击到目标。
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/自动化网课/3.py", line 108, in <module>
classAA3[b].click()
我确确实实用web.switch_to方法切换到了正确的页面,滚动也生效了,但偏偏问题从第二次点击事件开始出现
一开始我以为是列表中爬取的课程元素对应不上新建页面中的课程元素,然后我把新旧页面的课程都爬了下来进行对比,发现两者是一样的,可以对应得上
我推测是滚动的问题,有什么滚动方法推荐吗?