python-3.x - 如何在 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"}
解决方案
它需要等到 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()
推荐阅读
- powershell - 与 WinSCP .NET 程序集成功远程到本地同步后提取子文件夹和文件的名称
- docker - 从 docker 映像访问 BigQuery
- php - Laravel 8 使用 webkitdirectory 和 Storage 上传“文件夹”
- text - 在文本编辑器中一次编辑多行
- python - 如何在特定时间间隔后自动运行我的 python 模型?
- ruby-on-rails - 将 rails 升级到 6.1.0 和 ruby 2.7 后未初始化的常量 Logger::SimpleFormatter (NameError)
- c# - 当我使用 Process.Start("explorer.exe", path); 时,Windows 资源管理器正在我的 wpf 应用程序后面打开。
- forestadmin - 如何将 zip 文件上传到森林管理员?
- python - 为字典列表的每个元素添加一对键/值
- javascript - 获取数据后:新状态未定义