当前位置: 首页 > 知识库问答 >
问题:

尝试保存屏幕截图时出现Selenium WebDriverException错误(Python 3.6)

夹谷志
2023-03-14

我正在尝试使用Python 3.6(在Windows 10上)的Selenium保存一个网站的屏幕截图。当我使用get_screenshot_as_file()get_screenshot_as_png()函数时,总会出现以下异常:

WebDriver异常:未知错误:无法从未知错误中获得自动化扩展:无法找到页面:chrome-扩展://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html

(会话信息:chrome=60.0.3112.90)

(驱动程序信息:chromedriver=2.25.426923(0390b88869384d6eb0d5d09729679f934aab9eed),平台=Windows NT 6.1.7601 SP1 x86_64)

例如:

driver = webdriver.Chrome()
ref = 'http://google.com'
driver.get(ref)
driver.get_screenshot_as_png()

是否有解决方法,或其他方法将整个页面保存为图像?

共有1个答案

华知
2023-03-14

我建议您使用save_screenshot()方法,而不是get_screenshot_as_png()方法save_screenshot()方法使用一个参数作为屏幕截图的名称以及逻辑/绝对路径。下面的代码块导航到URL,并将屏幕截图另存为temp。png位于名为屏幕截图的子目录中,该子目录是在我的项目范围内创建的。

from selenium import webdriver
driver = webdriver.Chrome(r'C:\Utility\BrowserDrivers\chromedriver.exe')
ref = 'http://google.com'
driver.get(ref)
driver.save_screenshot('./Screenshots/temp.png')
driver.quit()

请注意,Python文档指定确实还存在一些方法(),如下所示:

  1. get_screenshot_as_png():获取当前窗口的屏幕截图作为二进制数据。
  2. get_screenshot_as_file(filename):获取当前窗口的屏幕截图。
  3. get_screenshot_as_base64():获取当前窗口的屏幕截图,显示为Base64编码的字符串

您可以在如何使用Selenium WebDriver截图中找到详细的讨论

 类似资料:
  • 我正在使用MSpec使用硒网络驱动程序驱动一些自动化的用户界面测试。很像我在网上找到的例子。当测试失败时,我很难让它截图。 我在另一个问题上看到了一个评论,因为他们在示例Web规范中有一个。然而,在最新版本的Mspec(0.9.1)中似乎不存在。 在最新版本的mspec中,有没有其他方法可以做到这一点?最终,我将作为TeamCity工件生成HTML报告,并包含任何失败规范的屏幕截图。

  • 更新XCode 8.2后,每次保存模拟器屏幕截图都会使其崩溃。即使我重置了内容和设置,仍然会崩溃。 我应该删除所有模拟器并再次安装它们吗? 更新: 8.2.1也有同样的问题 8.3只支持塞拉利昂 以下是坠机报告:

  • 在Linux下有很多屏幕载图的工具,下面简单介绍一下: 在GNOME桌面中自带了一个屏幕截图工具,位于“动作”栏内。该工具功能很少,只能截取当前屏幕。 在GMIP中也可截图,在“文件”--“获取”菜单下有一个“屏幕抓图”选项可进行屏幕截图。它可截取任意图窗口的内容,并自动输入到GMIP中,我们可方便地进行处理和保存。 安装ImageMagick软件,它有一个工具叫import可用于屏幕截图。该工具

  • 点击按钮进行截屏,可以将截屏图像保存到相册中。 作者说:听说会和苹果的策略有冲突,应用如果上架可能会被拒绝。这个估计是看人品了吧。经过测试发现,如果先弹出对话框,然后再截屏,似乎并不能把对话框也给保存下来。 [Code4App.com]

  • 我正在尝试使用SeleniumWebDriver拍摄一个网站的截图,并将其保存在所需的位置。 下面的代码运行良好,但Selenium没有为我保存任何屏幕截图? 有人知道我如何让Selenium截图并保存到我的电脑吗?

  • 我试图创建GIF动画演示我的应用程序。 为了创建我的应用程序的动画GIF,我需要获取屏幕截图。我知道我可以调用Form.paint(图形)-方法。但是,在拖放时,这不会正确地给我一个屏幕截图。在Codename One中获取屏幕截图的最佳方式是什么?