Загрузить изображение Selenium Webdriver Python — не удается загрузить изображение => Ошибка: «Не удается найти элемент: {«метод»:»xpath»,»селектор»:»»

#python #selenium #selenium-webdriver #xpath #file-upload

#python #селен #selenium-webdriver #xpath #загрузка файла

Вопрос:

Я столкнулся с проблемой загрузки изображения в Selenium webdriver на Python, я проверил HTML и использовал полный Xpath для поиска элемента, но это не сработало. Я все еще получаю эту ошибку selenium.common.exceptions.Исключение NoSuchElementException: Сообщение: нет такого элемента: не удалось найти элемент: {«метод»:»xpath»,»селектор»:»/html/body/div [2]/ div / div [4]/ div [2]/ div / div [2]/ div / div /div 1 / div / table/tbody/tr / td/table/tbody/tr / td/div[3] / div»}

Это мой код:

 #step 2 upload photo
upload_photo = driver.find_element_by_xpath('/html/body/div[2]/div/div[4]/div[2]/div/div[2]/div/div/div[1]/div/table/tbody/tr/td/table/tbody/tr/td/div[3]/div')
upload_photo.send_keys("/Users/Documents/2020//CASINO/668X593.png")
time.sleep(2)
 

И это HTML-снипет:

     <div class="ve-Fc-Ye-Qd-Jo">Drag photos and videos here</div>
    <div class="ve-Fc-Ye-Qd-Io">Or, if you prefer...</div>
    <div id=":f"><div role="button" class="a-b-c d-u d-u-F" tabindex="0" style="user-select: none;">Select photos and videos from your computer
    </div>
</div>
 

Скриншот интерфейса

Комментарии:

1. поделитесь html dom, чтобы мы могли помочь вам написать правильный xpath

Ответ №1:

Попробуйте следующее.Чтобы получить div внутри div id =’:f’.

 upload_photo = driver.find_element_by_xpath("//*div[@id=':f']/div")
upload_photo.send_keys("/Users/Documents/2020/CASINO/668X593.png")
 

Комментарии:

1. Я только что попробовал, у меня снова эта ошибка: selenium.common.exceptions. InvalidSelectorException: Сообщение: недопустимый селектор: не удалось найти элемент с выражением xpath //* div [@id=’:f’]/ div из-за следующей ошибки: SyntaxError: не удалось выполнить ‘evaluate’ для ‘Document’: Строка ‘//* div [@id=’:f’]/ div’ не является допустимым выражением XPath.

Ответ №2:

Попробуйте найти элемент по идентификатору:

 upload_photo = driver.find_element_by_id(":f")
 

Вы также можете использовать ожидания для решения следующих проблем: если элемент еще не присутствует в DOM.

Подробнее об этом здесь:

https://selenium-python.readthedocs.io/waits.html#:~:text=Selenium Webdriver provides two types,trying to locate an element.