Я пытаюсь создать твиттер-бота и застреваю на странице входа в систему.
Вот мой код:
from bs4 import BeautifulSoup
import requests
import random
import datetime
from datetime import timedelta
import time
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import schedule
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://twitter.com/i/flow/login")
# for twitter
driver.find_element(By.XPATH,'/html/body/div/div/div/div[1]/div/div/div/div/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div/div/div/div[5]').click()
Я всегда получаю указанную ниже ошибку:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/div/div/div[1]/div/div/div/div/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div/div/div/div[5]"}
(Session info: chrome=91.0.4472.101)
Stacktrace:
#0 0x55f817605919 <unknown>
Я пробовал это с css_selector, xpath, class, ID, но ничего не работает. Я не могу нажать на поле, чтобы ввести свой адрес электронной почты и пароль.
Может кто-нибудь показать мне, как решить эту ошибку.
К вашему сведению: если какой-то ответ был полезен, вы также можете проголосовать за него. Это можно сделать для нескольких ответов.






В основном это происходит из-за того, что элемент не загружается полностью, когда вы пытаетесь щелкнуть по нему. Одна вещь, которую вы можете сделать, это установить временной сон после получения URL-адреса, чтобы дождаться загрузки страницы, а затем попытаться найти элемент. как код ниже:
driver.get("https://twitter.com/i/flow/login")
time.sleep(3)
driver.find_element(By.XPATH,'/html/body/div/div/div/div[1]/div/div/div/div/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div/div/div/div[5]').click()
Есть несколько проблем с вашим кодом:
WebDriverWaitexpected_conditions явное ожидание.Работает следующий код:
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument("start-maximized")
webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(service=webdriver_service, options=options)
wait = WebDriverWait(driver, 20)
actions = ActionChains(driver)
url = "https://twitter.com/i/flow/login"
driver.get(url)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[autocomplete='username']"))).click()
Результат
Отвечает ли это на ваш вопрос? Твиттер регистрируется автоматически с помощью модуля селена, не удается найти ошибку элемента