Я создал скрипт, используя Python и Selenium, для загрузки изображения из локальной папки на эту веб-страницу. Веб-сайт требует входа в систему Google для доступа к странице с возможностью загрузки.
После завершения входа сайт автоматически перенаправляет меня на целевую страницу. После того, как браузер достигнет целевой страницы, необходимо нажать Full Remake
. Теперь скрипт пытается использовать кнопку Drag & Drop your image or Browse
для загрузки изображения, но выбирает кнопку Browse
и ничего не делает. Это изображение, которое я пытаюсь загрузить на этот сайт.
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'https://reroom.ai/'
options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
gmail = "" #gamil address here
password = "" #password here
driver.get(url)
original_window = driver.current_window_handle
driver.maximize_window()
try:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@type='button'][contains(.,'Accept')]"))).click()
except Exception as err:
pass
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[./img[@alt='google']][contains(.,'Sign in with Google')]"))).click()
time.sleep(5)
WebDriverWait(driver, 20).until(EC.new_window_is_opened)
driver.switch_to.window([window for window in driver.window_handles if window != original_window][0])
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#identifierId"))).send_keys(gmail)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#identifierNext"))).click()
time.sleep(5)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='Passwd']"))).send_keys(password)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button/span[.='Next']"))).click()
driver.switch_to.window(original_window)
time.sleep(5)
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//span[.='Full Remake']"))).click()
image_path = r'C:\Users\C.L\Desktop\Jonathan\c7OgQ1Qh.jpeg'
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img[class='object-contain']")))
time.sleep(5)
file_input = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='filepond--label-action'][.='Browse']")))
time.sleep(5)
file_input.send_keys(image_path)
Как загрузить изображение на этот сайт?
🤔 А знаете ли вы, что...
Python используется в разработке мобильных приложений с использованием Kivy.
Вам следовало поискать элемент ввода для отправки изображения. Объектом, который фактически принимает изображение в вашем приложении, является: - file_input =driver.find_element(By.XPATH, "//input[@class='filepond--browser']"), а не ссылка просмотра.
Следующий код должен работать сейчас: -
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'https://reroom.ai/'
options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
gmail = "" #gamil address here
password = "" #password here
driver.get(url)
original_window = driver.current_window_handle
driver.maximize_window()
try:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@type='button'][contains(.,'Accept')]"))).click()
except Exception as err:
pass
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[./img[@alt='google']][contains(.,'Sign in with Google')]"))).click()
time.sleep(5)
WebDriverWait(driver, 20).until(EC.new_window_is_opened)
driver.switch_to.window([window for window in driver.window_handles if window != original_window][0])
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#identifierId"))).send_keys(gmail)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#identifierNext"))).click()
time.sleep(5)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='Passwd']"))).send_keys(password)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button/span[.='Next']"))).click()
driver.switch_to.window(original_window)
time.sleep(15)
WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.XPATH, "//span[.='Full Remake']"))).click()
image_path = r'C:\Users\C.L\Desktop\Jonathan\c7OgQ1Qh.jpeg'
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//span[@class='filepond--label-action'][.='Browse']")))
time.sleep(5)
file_input =driver.find_element(By.XPATH, "//input[@class='filepond--browser']")
time.sleep(5)
file_input.send_keys(image_path)
time.sleep(5)