我想截屏Selenium中的一个元素,根据文档,每个WebElement都有一个功能:
截图(文件名)
将当前元素的屏幕截图保存到PNG图像文件。如果有任何IOError,则返回False,否则返回True。在文件名中使用完整路径。
Args:filename:您希望将屏幕截图保存到的完整路径。这应该以一个简单的结尾。png扩展
用法:元素。截图(“/Screenshots/foo.png”)
但是,当我在程序中使用此功能时:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
url='http://www.google.com'
browser = webdriver.Chrome()
browser.get(url)
content = browser.find_element_by_id('searchform')
content.screenshot('/home/ding/Pictures/shot.png')
它会引发如下错误:
Traceback (most recent call last):
File "<ipython-input-8-309cb404878d>", line 11, in <module>
content.screenshot('/home/ding/Pictures/shot.png')
File "/home/ding/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 453, in screenshot
png = self.screenshot_as_png
File "/home/ding/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 435, in screenshot_as_png
return base64.b64decode(self.screenshot_as_base64.encode('ascii'))
File "/home/ding/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 425, in screenshot_as_base64
return self._execute(Command.ELEMENT_SCREENSHOT)['value']
File "/home/ding/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 501, in _execute
return self._parent.execute(command, params)
File "/home/ding/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute
self.error_handler.check_response(response)
File "/home/ding/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 165, in check_response
raise exception_class(value)
WebDriverException: unknown command: session/efbca24571c5332230f4d032ae04787c/element/0.7487814861441955-1/screenshot
如何解决这个问题,并在Python中使用Selenium拍摄元素的屏幕截图?
导入其他库来编写文件在我看来很愚蠢。。。
使用内置的open
:
button_element = self._driver.find_element_by_class_name("a-button-input")
with open("element.png", "wb") as elem_file:
elem_file.write(button_element.screenshot_as_png)
亚马逊元素输出:
你需要用save_screenshot
方法替换screenshot
。所以
而不是:
content.screenshot('/home/ding/Pictures/shot.png')
使用:
content.save_screenshot('/home/ding/Pictures/shot.png')
这段代码非常适合在火狐浏览器中截取特定元素的屏幕截图。
from selenium import webdriver
import io
from PIL import Image
fox = webdriver.Firefox()
fox.get('http://stackoverflow.com/')
image = fox.find_element_by_id('hlogo').screenshot_as_png
imageStream = io.BytesIO(image)
im = Image.open(imageStream)
im.save(image_path)
问题内容: 我为此进行了很多搜索,但找不到解决方案。这是java中可能的解决方案的类似问题。 Python中有类似的解决方案吗? 问题答案: 除了硒以外,此示例还需要PIL映像库。有时将其作为标准库之一放入,有时却不作为,但如果没有,则可以使用 最后输出是… Stackoverflow徽标!!! 当然,现在仅获取静态图像将是过大的选择,但是如果您想要获取需要Javascript才能实现的功能,那可
问题内容: 有谁知道是否可以使用Selenium WebDriver截屏?(注:不是seleniumRC) 问题答案: 是的,有可能。以下示例是Java语言:
我找了很多,但找不到解决办法。这里有一个类似的问题,在java中有一个可能的解决方案。 Python中有类似的解决方案吗?
问题内容: 我有一个用Java编写的小项目,我需要用C#重写它。 差不多完成了,但是我仍然坚持使用Selenium Webdriver获取element的屏幕截图。我是通过Java用以下方式完成的: 它在Java中完美地工作,但是我不知道如何用C#重写它,因为我不太熟悉它。 有人可以提出一些不错的方法来在C#中实现相同的目的吗? 问题答案: 在这里,我编写了一些代码以使用C#拍摄Element的屏
本文向大家介绍如何使用python写截屏小工具,包括了如何使用python写截屏小工具的使用技巧和注意事项,需要的朋友参考一下 前言 今天我看了一下自己的文件夹,发现了自己写了许多似乎很无聊的代码。于是乎,一个想法油然而生:“生活已经很无聊了,不如再无聊一点叭”。 说干就干,那就开一个专题,我们称之为kimol君的无聊小发明。 妙…啊~~~ 今天要做的东西,就是用python写一个截屏工具。想必大
问题内容: 如何设置Selenium与Python一起使用?我只想用Python编写/导出脚本,然后运行它们。是否有任何资源?我尝试使用谷歌搜索,但是发现的东西要么是指Selenium(RC)的过时版本,要么是Python的过时版本。 问题答案: 您是说Selenium WebDriver吗?… 先决条件 :根据您的操作系统安装Python 使用以下命令安装 并在您的代码中使用此模块 您还可以根据