@kovalr

Почему сhromium (selenium python) не удаляет .org.chromium.Chromium.16etJh файлы?

Здравствуйте!
Есть скрипт который тестирует веб страницу. Запускается в Linux, написан на Python, selenium, ChromeDriver 2.40.565383

Скрипт бегает по страничке, извлекает данные, добавляет в базу и потом закрывает API
driver.quit()
И так каждые 15 минут.

Вот абстрактный пример

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from pyvirtualdisplay import Display
from sys import exit
import time
import re
import pymysql.cursors
import sys

while True:
    #this is body code
    # Start virtual display
    display = Display(visible=0, size=(1024, 768))
    display.start()

    # Initialization selenium driver

    chrome_options = Options()
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--disable-setuid-sandbox")
    chrome_options.add_argument("user-data-dir=/tmp/ChromeSelenium/loda/");
    driver = webdriver.Chrome('./drivers/chromedriver', chrome_options=chrome_options)

    driver.get("URL")
    SOME_CODE_HERE 

    # Quit Selenium driver
    driver.quit()

    # Stop virtual display
    display.stop()

    # Sleep before starting new loop
    print ('Set pausa time')
    for i in range(900, 0, -1):
        sys.stdout.write(str(i) + ' ')
        sys.stdout.flush()
        time.sleep(1)



Таких скриптов три.

Проблема в том что после нескольких дней в /tmp/ появляется много папок

/.org.chromium.Chromium.16etJh
/.org.chromium.Chromium.izddfJh
/.org.chromium.Chromium.przJwN
/.org.chromium.Chromium.qmbBd


Погуглил, попробовал добавить опцию
chrome_options.add_argument("user-data-dir=/tmp/ChromeSelenium/moda/");


но это не помогло, файлы по-прежнему создаются в

/tmp/.*

Помогите разобраться что делаю не так.
  • Вопрос задан
  • 412 просмотров
Решения вопроса 2
ScriptKiddo
@ScriptKiddo
Это, скорее всего, баг
Я фиксил добавлением в crontab
@daily rm -rf /tmp/.org.chromium.Chromium*
С Firefox, насколько помню, такая же проблема
P.S.
# Sleep before starting new loop
    print ('Set pausa time')
    for i in range(900, 0, -1):
        sys.stdout.write(str(i) + ' ')
        sys.stdout.flush()
        time.sleep(1)


Вот эту штуку убрать, сам скрипт добавить в Cron
https://www.adminschoice.com/crontab-quick-reference
Ответ написан
Комментировать
kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn
Как вариант используйте такую функцию и вызывайте её после driver.quit()

import glob
import os


def remove_temp():
    for f in glob.glob('/tmp/.org.chromium.Chromium.*'):
        try:
            os.remove(f)
        except Exception as e:
            print(f'{str(e)}')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы