在将chromedriver 73用于chrome版本73时在硒中截屏的问题

时间:2019-03-26 05:45:06

标签: selenium google-chrome selenium-webdriver selenium-chromedriver screenshot

当我尝试在python中使用硒捕获网页的屏幕截图时,出现错误消息selenium.common.exceptions.TimeoutException: Message: timeout: Timed out receiving message from renderer: 10.000

代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
indi_url = 'http://www.google.com'
options = Options()
options.add_argument("disable-infobars")
options.add_argument("--start-maximized")
options.add_argument("--disable-popup-blocking")
options.add_argument("disable-popup-blocking")
options.add_argument("--disable")
driver = webdriver.Chrome(options=options)
driver.get(indi_url)
driver.implicitly_wait(30)
driver.save_screenshot("new.png")

错误消息:

Screenshot of error message

我正在使用Chrome版本73,chromedriver版本73。

注意:在较低版本的chrome和chrome驱动程序中,代码工作正常(即屏幕截图)。

帮我解决新版chrome驱动程序的问题。

预先感谢

2 个答案:

答案 0 :(得分:0)

错误显示,您的屏幕快照文件名与模板扩展名.png不匹配

以下是制作屏幕截图的示例。

Java:

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File(".\\Screenshots\\example_screenshot.png"));

Python:

driver.save_screenshot("screenshot.png")

答案 1 :(得分:-1)

此错误消息...

  UserWarning: name used for saved screenshot does not match file type. It should end with a .png extension
"type. It should end with a .png extension", UserWarning)

...表示 Selenium-Python 客户端在调用get_screenshot_as_file()方法时遇到问题。


get_screenshot_as_file()

get_screenshot_as_file()将当前窗口的屏幕快照保存到PNG图像文件中。如果存在任何 IOError ,则返回False,否则返回True。在文件名中使用完整路径。

  • Args:
    • 文件名:您希望将屏幕快照保存到的完整路径。这应该以{{1​​}}扩展名结尾。
  • 用法:

    .png
  • 定义:

    driver.get_screenshot_as_file('/Screenshots/foo.png')
    

分析

根据错误堆栈跟踪的快照:

snapshot

您已将命令用作:

if not filename.lower().endswith('.png'):
    warnings.warn("name used for saved screenshot does not match file "
                  "type. It should end with a `.png` extension", UserWarning)
png = self.get_screenshot_as_png()
try:
    with open(filename, 'wb') as f:
        f.write(png)
except IOError:
    return False
finally:
    del png
return True

问题是:

  • 文件名不以driver.get_screenshot_as_file('new.jpeg') 结尾
  • 未提供文件名所需的完整路径

即使您希望使用.png,该方法也会依次调用save_screenshot()


解决方案

在项目中以get_screenshot_as_file(filename)的形式创建目录,并提供所需的屏幕快照文件名的绝对路径,同时调用以下两种方法之一:

  • Screenshots
  • driver.get_screenshot_as_file("./Screenshots/YakeshrajM.png")

更新

当前GAed Chrome v73 存在一些问题,您可能希望降级为 Chrome v72 。您可以在以下位置找到一些相关的讨论: