4

我目前正在使用 Python 中的 Firefox 驱动程序 Selenium 对滚动进行硬编码,无论如何它可以在页面上下平滑滚动吗?当页面中的图像加载时,页面可能会比正常情况大 20 倍。

我需要上下滚动多次,不要错过页面的任何部分。

当前方法效率不高,有时无法滚动到页面的某些部分。以下是我当前的代码

 browser = webdriver.Firefox()
browser.get(link)

browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.4);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.5);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.7);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.8);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.2);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.3);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.5);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.7);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.9);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/5.2);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/5.1);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/5.8);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.7);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/50);")
        time.sleep(0.2)
4

2 回答 2

8

如果在 Python 中使用 Selenium,您可以使用它...

scheight = .1
while scheight < 9.9:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight/%s);" % scheight)
    scheight += .01

或类似的规定。您可以添加if刹车以scheightwhile. 只需根据+=您的喜好进行 or 迭代。我使用了 .01,所以我可以直观地看到它滚动,否则您将需要超时并且它会显得不稳定。取决于你需要什么。

于 2014-03-06T00:50:49.483 回答
1

您可以尝试一次完成所有滚动吗?

 browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.5);window.scrollTo(0, document.body.scrollHeight/3.7);")

只需列出同一执行脚本调用中的所有滚动调用。

于 2013-11-06T04:17:07.517 回答