#python #selenium #browser #automation
Вопрос:
Я пытаюсь загрузить файл на следующий веб-сайт: kapwing.com/subtitles
У меня есть:
driver=webdriver.Chrome()
driver.get("https://www.kapwing.com/subtitles")
pageSource = driver.page_source
splitted = pageSource.split(" ")
variable = splitted[2119]
final_variable = variable.split('"')[1]
time.sleep(5)
print(final_variable)
driver.find_element_by_id(final_variable).send_keys("/Users/xx/Desktop/lol.mp4")
но там написано, что идентификатор не может быть найден. Я был бы признателен за любую помощь.
Комментарии:
1. Вы пытаетесь ввести текстовое поле справа от загружаемого файла, в котором запрашивается URL-адрес?
2. @Lzypenguin Я просто пытаюсь загрузить с компьютера. но и то, и другое может сработать..
Ответ №1:
Если вы пытаетесь нажать кнопку «Загрузить», а затем ввести местоположение файла во всплывающем окне, вы не сможете найти текстовое поле во всплывающем окне, пока не нажмете его.
вы могли бы использовать это:
import keyboard
upload_button = driver.find_element_by_xpath('//*[@id="upload-button-input-887ef963-27c3-46cc-8de5-dec5fc340dd7"]')
upload_button.click()
time.sleep(5)
keyboard.write('/Users/xx/Desktop/lol.mp4')
keyboard.press_and_release('return')
Комментарии:
1. Он ошибается, говоря, что идентификатор не существует. Я верю, что это потому, что это динамично? «Сообщение: такого элемента нет: Не удается найти элемент: {«метод»:»xpath»,»селектор»:»//*[@id=»кнопка загрузки-ввод-887ef963-27c3-46cc-8de5-dec5fc340dd7″]»}»
Ответ №2:
На веб-странице есть input[type='file']
поле ввода, которое означает, что вы можете напрямую выполнить .send_keys
time.sleep(5)
driver.find_element_by_css_selector(input[type='file']).send_keys("/Users/xx/Desktop/lol.mp4")
PS time.sleep(5)
предназначен только для наглядности. Вы также можете удалить это.
Ответ №3:
Попробуйте, это должно сработать для вас:
element = driver.find_element_by_xpath("//*[@id='upload-button-input-41d31461-54e1-47a3-978b-82b3077fe73e']")
element.send_keys("/Users/xx/Desktop/lol.mp4")
Ответ №4:
sendKeys
функция работает для input
тега. Вам нужно найти элемент и отправить местоположение file
.
element = driver.find_element_by_xpath("//input[contains(@id,'upload-button-input')]")
element.send_keys("location of file.")