为什么带有python硒的execute_script(“ return document.body.scrollHeight”)返回0

时间:2018-08-04 22:47:35

标签: python selenium

enter image description here。 以下是我的python代码。 get()运行良好。 但是在执行execute_script("return document.body.scrollHeight")之后,lastHeight返回0。 chromedriver网页上的动作没有。 然后newHeight还返回0。 他们为什么返回0

def getVideoData(self):
     self.chromeBrowser.get(self.videoTab)
     lastHeight = self.chromeBrowser.execute_script("return document.body.scrollHeight")
     print(lastHeight)
     while True:
        self.chromeBrowser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        self.chromeBrowser.implicitly_wait(0.5)
        newHeight = self.chromeBrowser.execute_script("return document.body.scrollHeight")
        print(newHeight)
        if newHeight == lastHeight:
           break
        lastHeight = newHeight

图像显示get()的正确结果。要显示图片,请点击“在此处输入图片说明”

1 个答案:

答案 0 :(得分:3)

我假设您正在尝试使用selenium滚动到页面的末尾。在分析问题时,我发现javascript document.body.scrollHeight存在一个错误,该错误对于YouTube.com之类具有浮动Web元素的页面来说是错误的。请参阅Bug details。我尝试使用document.documentElement.scrollHeight,它看起来可以在此页面上很好地工作。

>>> driver.execute_script("return document.documentElement.scrollHeight")
3120

话虽如此,下面的指令证明可以滚动到页面的末尾。

>>> height = driver.execute_script("return document.documentElement.scrollHeight")
>>> driver.execute_script("window.scrollTo(0, " + str(height) + ");")

Scrolled to bottom of page using script

如果您想删除Chrome is being controlled by automated software信息栏,请使用以下命令启动浏览器。

chrome_options = Options()
chrome_options.add_argument('disable_infobars')
driver = webdriver.Chrome(chrome_options=chrome_options)