Мне нужно автоматизировать загрузку файла на сайт. Я использую Selenium, и я могу перемещаться по сайту и выбирать нужный файл ввода с диска на моем компьютере. Единственная часть, которая не работает, - это нажатие кнопки «Загрузить».
driver = webdriver.Chrome(executable_path=r'P:/_Public/ScheduledTasks/SeleniumDriver/chromedriver.exe')
driver.get("https://client.schwabct.com?sId=MTUyMTM")
username = driver.find_element_by_name("userName")
username.clear()
username.send_keys(<userid>)
password = driver.find_element_by_name("password")
password.clear()
password.send_keys(<pw>)
driver.find_element_by_name("submitButton").click()
driver.get("https://client.schwabct.com/uploadData.action?currentApplication=87¤tRole=1¤tTab=16¤tModule=262&reset=Y")
driver.find_element_by_name("submitButton").click()
time.sleep(1)
upload_options = Select(driver.find_element_by_id("slctValue"))
upload_options.select_by_value("SECURITY_CHECKLIST")
fileinput = driver.find_element_by_id('uploadData_uploadDataInfo_fileUpload')
fileinput.send_keys(r"P:\_Public\Tamarac\Extracts\Upload_to_SCT\sct_upload_file.csv")
d = driver.find_element_by_id("isIgnoreHeaderId").click()
upload = driver.find_element_by_id("uploadButton").click()
Я могу запустить весь код непосредственно перед последним нажатием кнопки, и он ДОЛЖЕН загрузить файл, если я затем нажму кнопку вручную. Выдает ошибку, когда я пытаюсь автоматизировать последнее нажатие кнопки. Таким образом, кнопка нажимается, но веб-сайт не распознает файл. Текст ошибки, указанный на веб-сайте: «Не удается найти файл sct_upload_file.csv или файл пуст.»
Я пытался перейти на pyauto gui прямо перед нажатием последней кнопки, чтобы нажать на изображение кнопки , При этом также нажимается кнопка, но она выдает ту же ошибку, что и нажатие кнопки с помощью Selenium, даже при использовании естественных движений мыши через pyauto gui для медленного перемещения мыши над кнопкой и затем щелчка по ней.
HTML с сайта
Я также пытался использовать ActionChains для нажатия кнопки. Я снова могу щелкнуть по нему, но получаю ту же ошибку.
Я попытался просто выбрать элемент и использовать «upload.send_keys (Keys.RETURN)» в следующей строке. Он нажимает кнопку, но я получаю ту же ошибку.
Я также пытался переместить фокус на кнопку, отправив клавиши TAB и с помощью switch_to, а затем отправив клавишу RETURN, но я не был возможность получить фокус, чтобы фактически перейти к кнопке.
При нажатии последней кнопки веб-страница изменится на тип сообщения «подождите, пока файл загружен».
Данные обрабатываются, снимок экрана
Затем страница снова изменяется для отображения сообщения об ошибке.
Скриншот сообщения об ошибке
URL-адрес делает не изменить. Это "https://client.schwabct.com/uploadData.action" для каждой страницы.