Приведенный ниже код выполняется в цикле, где открываются 10-15 локальных файлов .html и изображение каждого из них сохраняется в формате .png.
- Ubuntu Server 16.04
- ChromeDriver 2.41.578700
- Google Chrome 74.0.3729.108
- селен 3.141.0
- Python3.6
Первые два файла открываются, и изображение сохраняется, однако остальные результаты приводят к:
('Соединение прервано.', ConnectionResetError (104, 'Соединениесброс с помощью peer '))
Все пути к файлам верны, и изменение порядка сохраняемых изображений не имеет значения.
def _save_image(html_file_path, png_file_path, h=850, w=833):
try:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
except Exception as ex:
raise Exception("Saving the plot as a .PNG requires *selenium* package to be installed. Please install selenium using *pip install selenium*.")
options = Options()
options.add_argument('--headless')
options.add_argument('disable-infobars')
options.add_argument('--disable-extensions')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
#options.add_argument('--disable-gpu')
if os.name == 'nt':
chrome_driver_path = os.path.dirname(__file__)
chrome_driver_path = chrome_driver_path[:-3] + "chromedriver.exe"
elif os.name == 'posix':
chrome_driver_path = "/usr/bin/chromedriver"
else:
raise Exception("OS could not be detected, thus selenium could not be initialised properly.")
driver = webdriver.Chrome(chrome_driver_path, chrome_options=options)
driver.set_window_size(w, h)
driver.get("file://"+html_file_path)
time.sleep(5)
driver.save_screenshot(png_file_path + ".png")
driver.quit()
time.sleep(5)
Время.sleep (5) был добавлен, чтобы проверить, была ли ошибка вызвана долгой загрузкой страницы, увеличил ее до 30 секунд и результат был таким же.Операторы импорта находятся внутри функции из-за технических требований, которые будут отсортированы на более позднем этапе.