Это всего лишь быстрая проверка работоспособности. Я надеюсь, что кто-нибудь сможет обратить на это внимание.
По сути, я пытаюсь войти на этот сайт (ArcGIS Online) с помощью селена: https://www.arcgis.com/home/signin.html?useLandingPage=true ".
Вот как выглядят элементы: ![enter image description here](https://i.stack.imgur.com/IWG0P.png)
Мой код для входа выглядит так:
user = driver.find_element_by_name("user_username")
password = driver.find_element_by_name("user_password")
user.clear()
user.send_keys(username)
password.clear()
password.send_keys(password)
driver.find_element_by_id("signIn").click()
В этом случае я использую параметр Вход в ArcGIS ... не уверен, нужно ли мне сначала активировать его? Я предполагаю, что здесь отсутствует шаг, чтобы получить это
В настоящее время я получаю следующую ошибку:
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="user_username"]"}
Действительно цените любые мысли, которые у людей есть!
EDIT:
Обновлен код на этот:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options = webdriver.ChromeOptions()
options.headless = True
browser = webdriver.Chrome(options=options)
url = "https://www.arcgis.com/home/signin.html?useLandingPage=true"
browser.get(url)
try:
user = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.ID, "user_username"))
)
password = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.ID, "user_password"))
)
signin = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.ID, "signIn"))
)
user.clear()
user.send_keys(username)
password.clear()
password.send_keys(password)
signin.click()
finally:
browser.quit()
И теперь получим эту ошибку:
TypeError: object of type 'WebElement' has no len()
Вероятно, что-то не так, мы более подробно рассмотрим правильное использование функции ожидания.
ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ:
Для всех, кто заходил на эту страницу, решение заключалось в том, чтобы дождаться загрузки элементов, убедитесь, что я выполнял поиск по Удостоверения личности и ... убедитесь, что у меня нет опечаток! Ниже представлен рабочий сценарий:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
username = "Hari"
password = "Seldon"
options = webdriver.ChromeOptions()
options.headless = True
driver = webdriver.Chrome(options=options)
url = "https://www.arcgis.com/home/signin.html?useLandingPage=true"
driver.get(url)
try:
user = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "user_username")))
passwd = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "user_password")))
user.clear()
user.send_keys(username)
passwd.clear()
passwd.send_keys(password)
driver.find_element_by_id("signIn").click()
finally:
driver.quit()