【问题标题】:Efficient method to scroll though pages using Selenium使用 Selenium 滚动页面的有效方法
【发布时间】:2013-11-17 05:03:39
【问题描述】:

我目前正在使用 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)

【问题讨论】:

    标签: python firefox selenium scroll


    【解决方案1】:

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

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

    或者类似的东西。您可以添加if 刹车以在while 内的特定scheight 位置捕获数据。只需制作您喜欢的+= 或迭代即可。我使用了 .01,所以我可以直观地看到它滚动,否则您将需要超时并且它会显得不稳定。看你需要什么。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 他特别要求不要这样做。 “无论如何它可以平滑地上下滚动页面吗?”
      猜你喜欢
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 2015-09-05
      • 2015-06-24
      • 1970-01-01
      相关资源
      最近更新 更多