首页 > 解决方案 > 如何在 selenium python 中找到登录元素并实际登录

问题描述

在此处输入图像描述

<input class="input--full ng-pristine ng-empty ng-invalid ng-invalid-required ng-touched" type="text" name="username" ng-model="loginCtrl.username" required="" autocapitalize="off" autocorrect="off" autofocus="">

我试图使用 selenium python 登录没有成功。这是我的代码

import json
from selenium import webdriver

driver = webdriver.Chrome('/usr/bin/chromedriver')

url_login = 'https://localhost:8443/manage/hotspot/'
username = driver.find_element_by_id("username")
password = driver.find_element_by_id("password")

username.send_keys("username")
password.send_keys("password")

driver.find_element_by_name("submit").click()

错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"username"}

标签: python-3.xselenium

解决方案


它需要等到 javascript 呈现页面

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 

url_login = 'https://localhost:8443/manage/hotspot/'
driver = webdriver.Chrome('/usr/bin/chromedriver')
driver.get(url)

# add wait here
WebDriverWait(driver, 5).until(
    EC.presence_of_element_located((By.NAME, 'username'))
)
username = driver.find_element_by_name("username")
password = driver.find_element_by_name("password")

username.send_keys("username")
password.send_keys("password")

driver.find_element_by_id("loginButton").click()

推荐阅读