Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Не получается загрузить картинку ни в firefox ни в chrome

selenium
python
webdriver
Теги: #<Tag:0x00007f7b656d4538> #<Tag:0x00007f7b656d43a8> #<Tag:0x00007f7b656d4218>

(Наталия Гвоздик) #1

Пробовала загружать картинку как в chrome так и в firefox. В chrome выдает ошибку: WebDriverException: Message: unknown error: cannot focus element. А в firefox тест проходит успешно, но картинку не загружает.

Пытаюсь так:

    image = driver.find_element_by_id('dropzone-images')
    action = webdriver.ActionChains(self.driver)
    action.move_to_element(image)
    action.perform()
    image.send_keys(os.getcwd() + "/home/natali/small.png")

В firefox вписует адрес сюда:


(Ярослав Бойко) #2

попробуй найти где то рядом //input елемент и туда загрузить файл


(Наталия Гвоздик) #3

input type = ‘hidden’
не могу разобраться как это изменить. Может подскажите?


(Ray Romanov) #4

А это не имеет значение, туда нужно кейсендить файл…


(Наталия Гвоздик) #5

А когда идет загрузка файла обязательно должен быть инпут? Тот который я нашла просто к текстовому полю, а не к загрузке файла(


(Ray Romanov) #6

Должно быть input поле с атрибутом type=“file”…


(Ярослав Бойко) #7

Скиньте весь код страницы или дайте сайт


(Наталия Гвоздик) #8

У меня вот такой ипут появляется, но только после загрузки картинки.
input value=“images/category-images/small_vmjqJFo.png” name=“category_icon” type=“hidden”>


(Наталия Гвоздик) #9

до загрузки :

после:


(Ray Romanov) #10

У form не все внутренние теги открыты, переделайте первый скриншот с развернутыми ВСЕМИ внутренними тегами формы…


(Наталия Гвоздик) #11

до:

после:


(Ярослав Бойко) #12

на первом скрине есть input type=‘file’


(Наталия Гвоздик) #13

это не тот(
по крайней мере с ним не работает у меня


(Ярослав Бойко) #14

Попробуй так, или сделай метод котрый будет работать (проверь его на другом сайте), затем когда уверенна что есть хорошая ф-ция уже ищи где по коду она залезет

Imagepath=os.path.abspath('.\\folder1\\subfolder2\file1.jpg')
driver.find_element_by_id("Id of the element").clear()            
driver.find_element_by_id("Id of the element").send_keys(Imagepath)

(Наталия Гвоздик) #15

не помогло((


(Ярослав Бойко) #16

тогда ищи через что правильно залить файл


(Ray Romanov) #17

Вот бы ссылочку на это “чудо”…


(Sergey Korol) #18

В народе ходят слухи о существовании кастомных аплоадеров, у которых нет input'ов с типом file. :wink: Также существует поверье, что в таком случае нужно использовать OCR tools, или грузить файлы напрямую через сервисы.

А еще можно отправить волшебного пинка UI-щикам, попросив паблик линк на используемый для аплоада компонент, что сразу же снимет все вопросы и догадки.


(Наталия Гвоздик) #19

В общем решение нашлось.

driver.execute_script("var form = document.getElementById(‘add_category_form’); var div = document.createElement(‘div’); " +
"div.innerHTML = "<input value=‘images/category-images/small_vmjqJFo.png’ " +
“name=‘category_icon’ type=‘hidden’>”; " +
"form.appendChild(div); ")

Поскольку проверяю не загрузку картинки, а работу формы сделала вид, что картинку загрузила.