簡體   English   中英

如何使用python3和selenium截取元素的截圖

[英]How to take screenshot of element using python3 and selenium

我想截取元素的屏幕截圖。 我嘗試使用下面提到的代碼:

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)

幾個問題:

  1. find_elements_by_xpath返回一個列表,您不能請求列表上的屏幕截圖。 你的意思是find_element_by_xpath嗎?
  2. 無論如何,除了 Microsoft Edge 之外,沒有任何 WebDriver 真正實現基於元素的屏幕截圖 你必須生成一個全窗口截圖並裁剪它。

有關更多背景和解決方法,請參閱我之前對此主題的回答

使用 Firefox,您可以:

driver = webdriver.Firefox()
qr = driver.find_element_by_css_selector('.css_class')
qr.screenshot("abc.jpg")

您可以在 find_element_by_css_selector 中使用 class、id 或 tags。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM