【问题标题】:Scrolling Web Drivers using Selenium Efficiently使用 Selenium 有效地滚动 Web 驱动程序
【发布时间】:2014-04-06 02:20:59
【问题描述】:

我正在尝试寻找另一种正确滚动网页的方法。我需要滚动网页的原因是因为 75% 的数据是延迟加载的。这意味着在我滚动浏览它之前它不会出现。我目前正在使用如下缓慢的方法

browser.execute_script("window.scrollTo(0, document.body.scrollHeight/1.8);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/1.9);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/2.0);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/2.1);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/2.2);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/2.3);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/2.5);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/2.6);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/2.7);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/2.8);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/2.9);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.0);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.1);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.2);")
    time.sleep(0.2)
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.3);")
    time.sleep(0.2)
    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)

关于滚动的任何建议。提前致谢。

【问题讨论】:

    标签: python selenium python-3.x selenium-webdriver


    【解决方案1】:

    使用 Selenium 滚动的一个不错的方法是向正文发送空格键:

    background = browser.find_element_by_css_selector("body")
    for i in range(5):
        background.send_keys(Keys.SPACE)
        time.sleep(1)
    

    如果需要,您可以使用类似的代码和 Shift+空格键来向上滚动。

    顺便说一句,像这样使用range 循环特定次数可能是个坏主意……如果可能的话,最好循环直到某个特定元素可见。这只是为了举例。

    【讨论】:

    • 嗨 Tetrinity,非常感谢!
    猜你喜欢
    • 2017-09-03
    • 2022-01-28
    • 2014-04-30
    • 1970-01-01
    • 2016-06-30
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多