如何使用python3和selen来截取元素的屏幕截图
问题描述:
我想截取元素的屏幕截图。 我试着用以下提到的代码:如何使用python3和selen来截取元素的屏幕截图
ElementIs=driver.find_element_by_xpath(".//body/img")
ElementIs.screenshot('abc.jpg')
,但得到的错误:
File "C:\Python34\lib\site-packages\selenium-2.47.1-y3.4.egg\selenium\webdriver\remote\webelement.py", line 448, in _execute return self._parent.execute(command, params)
File "C:\Python34\lib\site-packages\selenium-2.47.1-y3.4.egg\selenium\webdriver\remote\webdriver.py", line 196, in execute self.error_handler.check_response(response)
File "C:\Python34\lib\site-packages\selenium-2.47.1-py3.4.egg\selenium\webdriver\remote\errorhandler.py", line 102, in check_responsevalue = json.loads(value_json)
File "C:\Python34\lib\json\__init__.py", line 318, in loads return _default_decoder.decode(s)
File "C:\Python34\lib\json\decoder.py", line 343, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Python34\lib\json\decoder.py", line 361, in raw_decode raise ValueError(errmsg("Expecting value", s, err.value)) from None ValueError: Expecting value: line 1 column 1 (char 0)
答
两个问题:
-
find_elements_by_xpath
返回一个列表,你不能要求一个屏幕截图在一张名单上。你的意思是find_element_by_xpath
? - 无论如何,除了Microsoft Edge,no WebDriver actually implements element-based screenshots。您必须生成全窗口截图并裁剪。
有关此主题的更多背景信息和解决方法,请参见my earlier answer。
答
与Firefox,您可以:
driver = webdriver.Firefox()
qr = driver.find_element_by_css_selector('.css_class')
qr.screenshot("abc.jpg")
您可以使用类,ID或标签find_element_by_css_selector。
谢谢。我编辑过(find_element_by_xpath) –