Как загрузить картинки Selenium

Рейтинг: 0Ответов: 2Опубликовано: 19.03.2023

помогите пожалуйста разобраться с загрузкой картинок в разные кнопки.Заранее благодарен. Пытался так,но картинка загружается только в постер:

driver.find_element(By.XPATH, '//input[@type="file"]').send_keys('images/imge/piv.jpg')
driver.find_element(By.XPATH, '//input[@type="file"]').send_keys('images/imge/pivo.jpg')

Poster и Bigposter кнопки Poster HTML Bigposter HTML

Ответы

▲ 0Принят

А ты посмотрел, какая именно картинка загружается в poster? уверен вторая.

метод find_element возвращает первый найденный в дереве элемент. и поиск идет сверху вниз. если первый раз по пути //input[@type="file"] тебе вернулся poster, то и второй раз тоже он вернется.

Решение - конкретизировать Xpath.

Например: xpath поддерживает индексацию. (и кажется она начинается с 1)

  • //input[@type="file"][1] - вернет poster
  • //input[@type="file"][2] - вернет big_poster

А еще лучше опереться на другие критерии поиска. В данном случае у обоих элементов прописан id. ID уникален (не всегда) и позволяет точно найти нужный элемент.

▲ 0
driver.find_elements(By.XPATH, '//input[@type="file"]')[
                        0].send_keys('/home/alex/projects/allprojects/all/adder_project/images/imge/piv.jpg')
                    time.sleep(6)
driver.find_elements(By.XPATH, '//input[@type="file"]')[
                        1].send_keys('/home/alex/projects/allprojects/all/adder_project/images/imge/pivo.jpg')
                    time.sleep(6)

Этот код работает для 2 форм загрузки,нужно было делать через

driver.find_elements(By.XPATH, '//input[@type="file"]')[
                        0]

и менять елемент [0] ....[1]