我用selenium来抓取一个动态网站。我的问题是我无法向下滚动到我要查找的项目。首先,我列出了我想从中获取信息的项目(python_button1)。我必须点击这个列表中的每一个项目,才能看到一个新窗口,我想在其中删除它们。然后我做了一个循环来点击这些项目。之后,我关上我打开的窗户。不幸的是,我无法向下滚动到每个项目来单击它们。我使用了以下代码,但它向下滚动到最后一个项目,并跳过其他项目。如果你能帮助我,我将非常感激。谢谢!在
python_button1 = driver.find_elements_by_class_name('simboloEvento')
for x in python_button1:
x.click()
time.sleep(2)
driver.find_element_by_class_name('cerrarBoton').click()
driver.execute_script("coordinates=arguments[0].
getBoundingClientRect();scrollTo( coordinates.x,coordinates.y);", x)
time.sleep(2)
innerHTML = driver.execute_script("return document.body.innerHTML")
print(innerHTML)
向下滚动列表是一个JavaScript对象。我必须点击每个对象来激活javascript函数(一个新窗口)。我可以通过我的代码激活这些对象,但问题是至少有一个项目不在当前屏幕中。这就是为什么我应该首先向下滚动到那个对象(这里是x)以便能够单击它。但我不知道如何向下滚动到那个对象。我使用了我在这篇文章和这篇文章中使用的代码:driver.execute_脚本(“arguments[0].scrollIntoView();”,x)但它们都不适合我!在
您是否尝试过使用selenium actions类?在
为此你需要两样东西。首先要知道元素在哪里,可以使用python js这样做:
上面的组合框将返回一个字符串,该字符串表示元素到文档(网站)顶部的相对位置
然后你可以滚动到你想要的位置
^{pr2}$这个会把屏幕移到元素所在的位置,有些元素需要等待,所以我建议一些这种性质的服务生函数:
我自己做了一个带有js导航的小模块,因为即使selenium很强大,它有时也不想在某些网站上这样做。在
编辑: 为了完整起见,此片段使元素可见:
这是因为
arguments[0]
表示execute_script
中的element
参数相关问题 更多 >
编程相关推荐