Ошибка при создании скриншота в селене при использовании chromedriver 73 для Chrome версии 73 - PullRequest
2 голосов
/ 26 марта 2019

Когда я пытался сделать скриншот веб-страницы, используя селен в python, я получаю сообщение об ошибке selenium.common.exceptions.TimeoutException: Message: timeout: Timed out receiving message from renderer: 10.000.

Код:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
indi_url = 'http://www.google.com'
options = Options()
options.add_argument("disable-infobars")
options.add_argument("--start-maximized")
options.add_argument("--disable-popup-blocking")
options.add_argument("disable-popup-blocking")
options.add_argument("--disable")
driver = webdriver.Chrome(options=options)
driver.get(indi_url)
driver.implicitly_wait(30)
driver.save_screenshot("new.png")

Сообщение об ошибке:

Screenshot of error message

Я использую Chrome версии 73, Chromeriver версии 73.

Примечание: код работал нормально (т.е. снимок экрана) в более низкой версии Chrome и Chrome Driver.

Помогите мне решить эту проблему для новой версии драйвера Chrome.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Это сообщение об ошибке ...

  UserWarning: name used for saved screenshot does not match file type. It should end with a .png extension
"type. It should end with a .png extension", UserWarning)

... означает, что клиент Selenium-Python столкнулся с проблемой при вызове метода get_screenshot_as_file().


get_screenshot_as_file ()

get_screenshot_as_file () сохраняет снимок текущего окна в файл изображения PNG. Возвращает False, если есть IOError , иначе возвращает True. Используйте полные пути в вашем имени файла.

  • Args:
    • filename: полный путь, к которому вы хотите сохранить скриншот. Это должно заканчиваться расширением .png.
  • Использование:

    driver.get_screenshot_as_file('/Screenshots/foo.png')
    
  • Defination:

    if not filename.lower().endswith('.png'):
        warnings.warn("name used for saved screenshot does not match file "
                      "type. It should end with a `.png` extension", UserWarning)
    png = self.get_screenshot_as_png()
    try:
        with open(filename, 'wb') as f:
            f.write(png)
    except IOError:
        return False
    finally:
        del png
    return True
    

* +1040 * Анализ * +1041 *

Согласно снимку трассировки стека ошибок:

snapshot

Вы использовали команду как:

driver.get_screenshot_as_file('new.jpeg')

Проблемы были:

  • Имя файла не заканчивается на .png
  • Не указан желаемый полный путь к вашему имени файла .

Даже если вы хотите использовать save_screenshot(), этот метод по очереди вызывает get_screenshot_as_file(filename)


Решение

Создайте каталог в своем проекте как Screenshots и укажите абсолютный путь имени файла, который вы хотите использовать для скриншота, при этом вызывая любой из методов следующим образом:

  • driver.get_screenshot_as_file("./Screenshots/YakeshrajM.png")
  • driver.save_screenshot("./Screenshots/YakeshrajM.png")

Обновление

В настоящее время GAed Chrome v73 имеет некоторые проблемы, и вы можете понизить рейтинг до Chrome v72 . Вы можете найти пару соответствующих обсуждений в:

0 голосов
/ 26 марта 2019

Как показывает ошибка, ваше имя файла для снимка экрана не соответствует расширениям шаблона .png

Вот пример того, как сделать снимок экрана.

Java:

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File(".\\Screenshots\\example_screenshot.png"));

Python:

driver.save_screenshot("screenshot.png")
...