Недавно я начал с Selenium в Python с Chromium Webdriver, но он не заполняет экран входа в систему, что я не так? Я думаю, что это должно быть с функцией "find_element". Вот мой код:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time


driver = webdriver.Chrome()

driver.get("https://instagram.com")
print(driver.title)

input_username = driver.find_element_by_xpath("/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div[2]/div/label/input")
input_username.send_keys("lowity")

time.sleep(5)

input_paswd = driver.find_element_by_xpath("/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div[3]/div/label/input")
input_paswd.send_keys("password")

time.sleep(5)

button_login = driver.find_element_by_xpath("/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div[4]/button")
button_login.click()

time.sleep(5)

time.sleep(10)
driver.quit()

И в консоли нет вывода ошибок.

-1
Lowity 17 Июл 2020 в 22:57

1 ответ

Лучший ответ

Вам нужно подождать, пока элемент станет активным, чтобы щелкнуть по нему. Лучше всего использовать функцию WebdriverWait() с until(EC.element_to_be_clickable) Вот обновленный код

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


driver = webdriver.Chrome(executable_path = 'C:\\chromedriver.exe')

driver.get("https://instagram.com")
print(driver.title)

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div[2]/div/label/input"))).send_keys("lowity")

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div[3]/div/label/input"))).send_keys("janosch2005")

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div[4]/button"))).click()

driver.quit()
0
Aleksander Ikleiw 17 Июл 2020 в 20:01