Я часто запускаю скрипт на Python, который использует chromedriver для селена, чтобы открыть браузер и выполнить некоторые операции, связанные с AJAX.Программа работает на сервере AWS EC2 Red Hat Linux.
Информация о сервере:
NAME = "Сервер Red Hat Enterprise Linux"
VERSION = "7.2 (Maipo)"
Версия Chrome: Google Chrome 68.0.3440.106
Версия Chromedriver: ChromeDriver 2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706)
Модуль Python: 3.5.2 * 1013версия: 3.8.1
Эту программу необходимо запускать от имени пользователя root, поэтому при запуске chromedriver необходимо добавить «no-sandbox» в параметры chrome (ссылка: https://blog.testproject.io/2018/02/20/chrome-headless-selenium-python-linux-servers/).
Однако, это приводит к незакрытому процессу хромедрайвера / хрома после выполнения программы. (Ссылка: https://github.com/SeleniumHQ/selenium/issues/5600)
См. Снимок экрана для незакрытого процесса хромирования
Вот часть моего кода с использованием селена с chromedriver:
from selenium import webdriver
from fake_useragent import UserAgent
import time
ua = UserAgent()
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("user-agent=ua.chrome()")
chrome_options.add_argument('--headless')
chrome_options.add_argument("--no-sandbox")
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path="/usr/local/bin/chromedriver")
url = "https://www.example.com" # just an example
driver.get(url)
Я закрыл драйвер в скрипте как:
time.sleep(2)
driver.close()
driver.quit()
Но после выполнениясценарий.
Из моего перЯ пытался использовать PhantomJS.Однако PhantomJS больше не находится в активной разработке, и они сами предлагают вместо этого использовать Chrome без головы.
Мой вопрос таков: есть ли способ запустить хроматограф на основе селена с использованием Python на сервере Red Hat Linux в качестве пользователя root без генерации зависания?chromedriver / хром?(поскольку это почти занимает все воспоминания и делает сервер чрезвычайно медленным).