Я использую пробный веб-сайт, чтобы научиться загружать файлы с помощью Python Selenium, где окно загрузки не является частью HTML.Окно загрузки является обновлением системного уровня.Это уже решено с использованием JAVA (ссылка (и) на stackoverflow ниже).Если это невозможно через Python, я собираюсь перейти на JAVA для этой задачи.
НО,
Дорогие все мои коллеги, любители Python, почему это не должно быть возможно с помощью Python webdriver-Selenium.Отсюда этот квест.
Решено в JAVA для URL: http://www.zamzar.com/ Решение (и код JAVA) в stackoverflow: Как обрабатывать загрузку файлов Windows с помощью Selenium WebDriver?
Это мой код на Python, который должен быть понятен, включая ссылки для загрузки chrome webdriver.
Задача (загрузка файла) Я пытаюсь вкратце: Веб-сайт: https://www.wordtopdf.com/
Примечание_1: мне не нужен этот инструмент для какой-либо работы, так как есть гораздо лучшие пакеты для этого словав PDF преобразование.Вместо этого это просто для изучения и полировки кода / приложения Python Selenium.
Примечание_2: Вам придется тщательно ввести 2 пути в мой код ниже после загрузки и разархивирования драйвера chrome (ссылка ниже в комментариях).2 пути: [a] путь к файлу (/ любому) слова и [b] путь к разархивированному драйверу Chrome.
Мой код:
from selenium import webdriver
UNZIPPED_DRIVER_PATH = 'C:/Users/....' # You need to specify this on your computer
driver = webdriver.Chrome(executable_path = UNZIPPED_DRIVER_PATH)
# Driver download links below (check which version of chrome you are using if you don't know it beforehand):
# Chrome Driver 74 Download: https://chromedriver.storage.googleapis.com/index.html?path=74.0.3729.6/
# Chrome Driver 73 Download: https://chromedriver.storage.googleapis.com/index.html?path=73.0.3683.68/
New_Trial_URL = 'https://www.wordtopdf.com/'
driver.get(New_Trial_URL)
time.sleep(np.random.uniform(4.5, 5.5, size = 1)) # Time to load the page in peace
Find_upload = driver.find_element_by_xpath('//*[@id="file-uploader"]')
WORD_FILE_PATH = 'C:/Users/..../some_word_file.docx' # You need to specify this on your computer
Find_upload.send_keys(WORD_FILE_PATH) # Not working, no action happens here
На основе чего-то оченьаналогично в JAVA ( Как обработать загрузку файлов Windows с помощью Selenium WebDriver? ), это должно работать как чудо.Но вуаля ... полный провал и, следовательно, шанс узнать что-то новое.
Я также попробовал:
Click_Alert = Find_upload.click()
Click_Alert(driver).send_keys(WORD_FILE_PATH)
Не сработало.«Оповещение» должно быть встроенной функцией согласно этим двум ссылкам (https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.alert.html & Selenium-Python: взаимодействовать с модальными диалоговыми окнами системы ).
Но функция 'Alert' в приведенной выше ссылке, похоже, не существует в моей настройке Python даже после выполнения
from selenium import webdriver
@ Все читатели, надеюсь, это не займет многовашего времени, и мы все узнаем что-то из этого.
Приветствия