Как загрузить изображение на сайт с помощью selenium

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

Всем привет! У меня проблема с загрузкой файла на сайт restorephotos.io с помощью selenium. Я нашел пример кода для загрузки, но он не работает и выводит ошибку. Весь код:

from selenium import webdriver
from selenium.webdriver.common.by import By
# from selenium.webdriver.support.wait import WebDriverWait

chrome = webdriver.Chrome()
chrome.get("https://www.restorephotos.io/restore")
assert "Restore Photos" in chrome.title
fileInput = By.CSS_SELECTOR('input[type=file]')
filePath = r"C:\Users\user\Videos\Little_Women_1\Little_Women_1_000001.jpg"
chrome.find_element(fileInput).send_keys(filePath)
assert "No results found." not in chrome.page_source

Часть кода, в котором ошибка: fileInput = By.CSS_SELECTOR('input[type=file]').

Ошибка:

Traceback (most recent call last):
 File "D:\LDPlayer\main.py", line 8, in <module>
   fileInput = By.CSS_SELECTOR('input[name=uploader__input-861027]')
TypeError: 'str' object is not callable

Сайт, по примеру которого я следовал: https://habr.com/ru/post/497922/

Ответы

▲ 2

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

Интересное у Вас наименование папки с материалами :D Возможное решение для Вас:

from selenium import webdriver
from selenium.webdriver.common.by import By

chrome = webdriver.Chrome()
chrome.get("https://www.restorephotos.io/restore")
assert "Restore Photos" in chrome.title
fileInput = chrome.find_element(By.CSS_SELECTOR, 'input[type=file]')
filePath = r"C:\Users\user\Videos\Little_Women_1\Little_Women_1_000001.jpg"
fileInput.send_keys(filePath)
assert "No results found." not in chrome.page_source
chrome.quit()
▲ 1

By.CSS_SELECTOR - это не функция, а строковая константа.

С селениумом я не работал, но, насколько я могу судить по итогам беглого гугления, проблемную строчку нужно переписать примерно так:

fileInput = chrome.find_elements(By.CSS_SELECTOR, 'input[type=file]')

А в указанной вами статье примеры определённо не на питоне, я бы не стал на них ориентироваться.

Посмотрите лучше здесь: https://habr.com/ru/post/250975/