一尘不染

上下滚动以使用Selenium Python使Element进入视图

selenium

我需要能够上下滚动才能找到与Selenium相关的元素。
我已经看到很多问题和答案,发现的主要思想是self.web_driver.execute_script("return arguments[0].scrollIntoView(true);", element),这就是我当前在代码中所拥有的。但这还不够好,因为此代码仅向下滚动,因此如果该元素位于可滚动视图的上部,则无法找到该元素。
因此,我需要一个先向上滚动(向上翻页?),然后开始向下滚动的脚本。
我尝试过这样的事情

self.web_driver.execute_script("return arguments[0].scrollIntoView(true);", element) 
self.web_driver.execute_script("window.scrollTo(0, -document.body.scrollHeight);")
self.web_driver.execute_script("return arguments[0].scrollIntoView(true);", element)

但这不会向上滚动:(


阅读 308

收藏
2020-06-26

共1个答案

一尘不染

您可以尝试以下代码向上滚动页面:

from selenium.webdriver.common.keys import Keys

self.web_driver.find_element_by_tag_name('body').send_keys(Keys.HOME)

您可以向上滚动到所需元素的另一种方式(首选):

element = self.web_driver.find_element_by_xpath('SOME_XPATH') # you can use ANY way to locate element
coordinates = element.location_once_scrolled_into_view # returns dict of X, Y coordinates
self.web_driver.execute_script('window.scrollTo({}, {});'.format(coordinates['x'], coordinates['y']))
2020-06-26