Безголовый Python Selenium MacOS для нажатия / загрузки документов с помощью Chromium - PullRequest
1 голос
/ 13 октября 2019

На эту тему много всего. Тем не менее, я пока не нашел ничего работоспособного , которое включает использование того, что сказано в названии выше, и конфигурации, перечисленные ниже.

Вот что я пытаюсь сделать: перейти к этому webpage и щелкните значок документа csv для загрузки (с помощью селекторов xpath или css). Любой значок в порядке - они загружают один и тот же контент.

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

Обратите внимание на следующие параметры для конфигураций ОС, Python, ChromeDriver и Chrome:

macOS Mojave v.10.14.6, Python v.3.7.3, ChromeDriver v.770386540, Chrome v.770386540

from selenium import webdriver

options = webdriver.ChromeOptions()

prefs = {"download.default_directory": "SOME_PATH"}
options.add_experimental_option("prefs", prefs)
options.binary_location = 'PATH_TO_CHROME'
options.add_argument('headless')

# set the window size
options.add_argument('window-size=1200x600')

# initialize the driver
driver = webdriver.Chrome('PATH_TO_CHROME_DRIVER',
                          options=options)

page_url = 'http://webapps.rrc.texas.gov/eds/eds_searchUic.xhtml'
button = '//*[@id="SearchUicForm:searchTable_paginator_top"]/a[7]'

driver.get(page_url)

# wait up to 10 seconds for the elements to become available
driver.implicitly_wait(5)

driver.find_element_by_xpath(button).click()

1 Ответ

2 голосов
/ 13 октября 2019

Вы можете прокомментировать эту строку кода options.add_argument('headless') и посмотреть, что происходит в браузере. В основном он щелкает значок cvs и всплывающее окно загрузки в браузере, поэтому нам нужно обработать это всплывающее окно для загрузки. Мы можем добавить параметры Chrome, чтобы предотвратить это.

options = Options()
options.add_experimental_option("prefs", {
  "download.default_directory": r"C:\Users\xxx\downloads\Test",
  "download.prompt_for_download": False,
  "download.directory_upgrade": True,
  "safebrowsing.enabled": True
})
driver = webdriver.Chrome(chrome_options=options)
...