2016-03-15 3 views
0

Я хочу снять снимок экрана. Я попытался с указанным ниже кодом:Как сделать снимок экрана с использованием python3 и 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) 

ответ

3

Несколько проблем:

  1. find_elements_by_xpath возвращает список, и вы не можете запросить скриншот в списке. Возможно, вы имели в виду find_element_by_xpath?
  2. В любом случае, за исключением Microsoft Edge, no WebDriver actually implements element-based screenshots. Вы должны создать скриншот с полным окном и обрезать его.

См. my earlier answer по этой теме для получения дополнительных сведений об обложках и обходных методах.

+0

Спасибо. Я редактировал (find_element_by_xpath) –

1

С Firefox вы можете:

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

Вы можете использовать класс, идентификатор или тегов в find_element_by_css_selector.

Смежные вопросы