Я тестирую веб-страницу, которая позволяет мне импортировать файлы csv на страницу.
На веб-странице используется кнопка «Импортировать из файла», чтобы открыть окно поиска (Mac osx), где я могу выбрать файл для загрузки. Мой код селена привел меня к этому моменту.
Я не могу найти поля текста или идентификатора, которые управляют процессом загрузки на веб-странице. HTML-тег ниже предназначен для кнопки, я думаю, что 'data-source'
— это путь к файлу, но я не могу использовать его для почему-то:
<a class="ac_button blue ac_button large import_file_link" data-source="file" onclick="return false;"><span>Import From File</span></a>
код пока:
#click on 'import from file' button
imports = driver.find_element_by_link_text('Import From File')
imports.click()
#file upload
fileUpload = driver.find_element_by_id('data-source')
fileUpload.send_keys('/Users/bob/Desktop/test.csv')
Какого идентификатора или текста мне не хватает в 'find_element_by'
, который поможет мне загрузить файл csv?
Заранее спасибо.
Вы пробовали
fileUpload = driver.find_element_by_xpath('//input[@type="file"]')
?Это сработало! Вопрос к вам: как мне заставить окно поиска исчезнуть после выбора моего файла?
Что такое окно поиска? Вы имеете в виду запрос на загрузку файла, например этот? Появляется ли он после
imports.click()
?окно поиска — это именно то приглашение на загрузку файла, которое вы показывали для окон, кроме mac. Он появляется сразу после import.click()
Просто удалите определение
imports
и нажмите. Эти строки избыточны -fileUpload.send_keys()
будет работать даже без этих строк.Когда я комментирую обе строки для импорта, код полностью останавливается после fileupload.send_keys() без каких-либо изменений на странице. Это то, что вы имеете в виду, удаляя определение?
Да, я имел в виду, что требуются только строки
fileUpload = driver.find_element_by_xpath('//input[@type="file"]')
иfileUpload.send_keys('/Users/bob/Desktop/test.csv')
... Можете ли вы поделиться URL-адресом страницы или это не публичная страница?URL-адрес страницы — activecampaign.com. Однако для доступа к странице, на которой я нахожусь, вам потребуется логин.