【发布时间】:2018-05-24 12:43:11
【问题描述】:
我正在使用 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_script("arguments[0].scrollIntoView();", x) 但它们都不适合我!
【问题讨论】:
-
向下滚动列表是 JavaScript 对象吗?
-
请显示HTML(不要使用截图)和项目截图
-
是的,向下滚动列表是一个 JavaScript 对象。我必须单击每个对象来激活 javascript 函数(一个新窗口)。我可以通过我的代码激活这些对象,但问题是当至少其中一个项目不在当前屏幕中时。这就是为什么我应该首先向下滚动到该对象(此处为 x)以便能够单击它。但我不知道如何向下滚动到该对象。我已经使用了我在这篇文章中使用的代码以及这个:driver.execute_script("arguments[0].scrollIntoView();", x) 但它们都不适合我!