Я пытаюсь загрузить 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
и т. Д. Я просто лдобиваясь решения на основе селена.