Selenium Python Set Chrome Default Скачать каталог в VPS - PullRequest
2 голосов
/ 28 сентября 2019

Я пытаюсь загрузить PDF-файл с использованием последней версии google-chrome & chromedriver на VPS-сервере Ubuntu 16.04 LTS со следующим кодом.

import json
import time
from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(1768, 1368))
display.start()
chrome_options = webdriver.ChromeOptions()
# chrome_options.add_argument('--headless')
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-notifications")
chrome_options.add_argument("--disable-popup-blocking")
chrome_options.add_argument("--disable-logging")
chrome_options.add_argument("--log-level=3")
chrome_options.add_argument("--kiosk-printing")
appState = {
    "recentDestinations": [{"id": "Save as PDF", "origin": "local"}],
    "selectedDestinationId": "Save as PDF",
    "version": 2,
}

prefs = {
    "printing.print_preview_sticky_settings.appState": json.dumps(appState),
    "download": {
        "default_directory": "/path/to/dir/",
        "prompt_for_download": False,
        "directory_upgrade": True,
    },
}
chrome_options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get(
    "https://www.adobe.com/content/dam/acom/en/accessibility/products/acrobat/pdfs/acrobat-x-accessibility-checker.pdf"
)
time.sleep(10)
driver.execute_script("window.print();")
time.sleep(30)
driver.quit()
display.stop()

Когда я тестирую вышеуказанный код локально, он загружаетсяфайл в системном каталоге загрузки по умолчанию вместо path/to/dir, но в любом случае загружает файл.

Но тот же код при выполнении на сервере VPS ничего не загружает.

Вещи IДо сих пор пытались:

  • найти любой PDF-файл, загруженный сценарием, используя locate -i *.pdf (Это подтверждает, что новые PDF-файлы не были загружены)
  • установка переменной среды с помощью: export XDG_DOWNLOAD_DIR='path/to/dir'
  • Выполнение команды: xdg-user-dirs-update --set DOWNLOAD path/to/dir
  • проверенный каталог загрузки по умолчанию устанавливается с помощью команды: xdg-user-dir DOWNLOAD (показывает системную папку загрузки по умолчанию)

Но пока ничего не получалось, любая помощь приветствуется!

ПРИМЕЧАНИЕ: Я знаю, что можно загрузить файл, сделав запрос GET с использованием таких модулей, как requests,urllib3 и т. Д. Я просто лдобиваясь решения на основе селена.

...