selenium в фоновом режиме скачивает файлы не в ту директорию

Рейтинг: 0Ответов: 1Опубликовано: 16.04.2023

Столкнулся с проблемой при исполнении кода в фоновом режиме. Необходимо сохранять скаченные файлы именно в ту папку которую указал пользователь.

Все работает исправно пока не включаешь работу в фоновом режиме - он начинает скачивать файлы либо в папку где находится исполняемый файл, либо в папку где он до этого находился, но не по указанному пути пользователя.

В чем может быть причина?

class Downloader:
def __init__(self, url, download_dir):
    self.url = url
    self.download_dir = download_dir
    self.user = fake_useragent.UserAgent().random
    self.options = webdriver.ChromeOptions()
    self.options.add_argument(f'"user-agent": {self.user}')
    self.options.add_experimental_option('prefs', {
        'download.default_directory': self.download_dir,
        'download.prompt_for_download': False,
        'download.directory_upgrade': True,
        'safebrowsing.enabled': True
    })
    self.options.add_argument("headless") #___активация фонового режима___ 
    self.driver = webdriver.Chrome(options=self.options)

def download_elements(self):
    try:
        self.driver.get(self.url)
        website_docs = self.driver.find_elements(By.CLASS_NAME, 'attachments-list__item__buttons__left-col')
        for dow_doc in website_docs:
            dow_doc.click()
        downloaded_files = os.listdir(self.download_dir)
        return downloaded_files
    except Exception as ex:
        print(ex)
    finally:
        self.driver.close()
        self.driver.quit()

# Пример использования
downloader = Downloader(
"https://torgi.gov.ru/new/public/lots/lot/22000010210000000915_1/(lotInfo:docs)?fromRec=false#lotInfoSection-docs",
"/Users/bender/PycharmProjects/auction_manager/garag/")
downloaded_files = downloader.download_elements()
print(downloaded_files)

Ответы

▲ 0

Нашел решение своей проблемы на офф. сайте selenium.

Достаточно было передать в options новый аргумент

.add_argument("--headless=new")

вместо

.add_argument("headless")

Ссылка на статью: https://www.selenium.dev/blog/2023/headless-is-going-away/