【问题标题】:Take snapshot using Selenium for page that doesn't stop loading使用 Selenium 为不停止加载的页面拍摄快照
【发布时间】:2018-09-04 05:38:51
【问题描述】:

我正在使用 Selenium 来捕获网页的屏幕截图。它在像 stackoverflow 这样的网站上效果很好,但我试图在一个永不停止加载的页面上使用它。有没有办法在 x 秒后抓取屏幕截图,无论是否完成?

当前代码:

import os
from selenium import webdriver


def main():
    driver = webdriver.Chrome()


    with open('test.txt', 'r') as f:
        for url in f.readlines():

            driver.get('http://' + url)

            sn_name = os.path.join('Screenshots', url.strip().replace('/', '-') + '.png')

            print('Attempting to save:', sn_name)
            if not driver.save_screenshot(sn_name):
                raise Exception('Could not save screen shot: ' + sn_name)

    driver.quit()


if __name__ == '__main__':
    main()

【问题讨论】:

  • trying to use it on a page that never stops loading 时会发生什么?
  • 什么都没有,它只是等待页面停止加载,以便截屏

标签: python selenium


【解决方案1】:

我认为它不会那样工作。
Webdriver 将隐式等待页面加载直到超时。
它应该给你一个超时异常。

我认为您应该使用 try-except 来捕捉它,然后截屏。
否则,您应该为另一个线程进行多线程编程以截取屏幕截图。

【讨论】:

  • 您是否有一些伪代码?我对 python 完全陌生
  • 您还可以根据需要减少(或延长)页面加载超时。关于多线程,我不相信它会起作用,因为 webdriver 不是线程安全的,这可能会导致竞争条件。创建另一个 webdriver 实例也不是一种选择,因为它会打开一个新的浏览器实例,因此您将无法从中截取第一个浏览器的屏幕截图。
猜你喜欢
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多