я хочу загрузить изображения через send_keys (), но это дает другой вывод? - PullRequest
0 голосов
/ 20 октября 2019

Я хочу загрузить несколько изображений на веб-страницу с помощью метода send_keys (). я попробовал этот код.

browser = webdriver.Chrome()
browser.get(link)
file_list = []
file_list.append('D:\\01.jpg')
file_list.append('D:\\02.jpg')
file_list.append('D:\\03.jpg')

for img in file_list:
    upload = browser.find_element_by_name('upload')
    upload.send_keys(img)

этот код выполняется без ошибок, но он загружает 6 изображений.

я хочу выводить как загруженные изображения: 01.jpg, 02.jpg, 03.jpg

но выдает выгруженные изображения: 01.jpg, 01.jpg, 02.jpg, 01.jpg, 02.jpg, 03.jpg

1 Ответ

0 голосов
/ 21 октября 2019

Вы можете попробовать объединить ваши операторы find_element и send_keys здесь. Ничто в вашем коде не указывает, почему изображения будут загружаться дважды, хотя это может быть основной проблемой на самой веб-странице и в том, как она была запрограммирована для приема файлов.

from time import sleep


browser = webdriver.Chrome()
browser.get(link)
file_list = []
file_list.append('D:\\01.jpg')
file_list.append('D:\\02.jpg')
file_list.append('D:\\03.jpg')

for img in file_list:
    print(img)
    browser.find_element_by_name('upload').send_keys(img)
    sleep(5)

Если img печатается только 3 раза, но загружено 6 изображений, тогда это проблема веб-страницы, а не проблема Selenium. Я добавил 5-секундный явный спящий режим, чтобы дать веб-странице некоторое время для обработки загрузки файлов, что может быть частью проблемы здесь.

Вы можете изменить sleep(5) на WebDriverWait, используяExpectedConditions для ожидания элемента на странице, указывающего, что загрузка прошла успешно - если вам нужна помощь в этом, лучше начать с просмотра HTML на странице, которую вы пытаетесь автоматизировать.

Надеюсь, это немного поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...