python - Python 中的 Selenium 错误 - 消息:没有这样的元素:无法找到元素
问题描述
我正在尝试使用 Selenium 从受密码保护的网站获取数据。但是,我在登录时一开始就卡住了,并显示以下错误消息:
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="username"]"}
(Session info: chrome=87.0.4280.66)
我使用的名称肯定是正确的,我检查了网站。包括等待时间也没有帮助......
我的代码是:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from getpass import getpass
driver = webdriver.Chrome()
driver.get("https://clearing.apcs.at/emwebapcsem/startApp.do")
print(driver.title)
print(driver.current_url)
# create an object for searchbox
username=driver.find_element_by_name("username")
password=driver.find_element_by_name("password")
# typte the input
username.send_keys("XXXXXX")
password.send_keys("XXXXXX")
driver.find_element_by_name('login').click()
任何建议,将不胜感激。
解决方案
要将字符序列发送到Benutzer和Passwort字段,因为元素位于 an 中,<frame>
因此您必须:
诱导WebDriverWait使所需的帧可用并切换到它。
诱导WebDriverWait使所需元素成为可点击的。
您可以使用以下任一定位器策略:
使用
CSS_SELECTOR
:driver.get('https://clearing.apcs.at/emwebapcsem/startApp.do') WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"frame[title='menu']"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.loginContentBoxInput[name='username']"))).send_keys("Endre") driver.find_element_by_css_selector("input.loginContentBoxInput[name='password']").send_keys("Endre")
使用
XPATH
:driver.get('https://clearing.apcs.at/emwebapcsem/startApp.do') WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//frame[@title='menu']"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='loginContentBoxInput' and @name='username']"))).send_keys("Endre") driver.find_element_by_xpath("//input[@class='loginContentBoxInput' and @name='password']").send_keys("Endre")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
浏览器快照:
参考
您可以在以下位置找到一些相关的讨论:
推荐阅读
- javascript - 添加 HTML 表单标签时,JavaScript 执行,但神奇地消失了
- c# - 如何在一个表上选择多个标签并将其保存在一个列表中
- session - 在烧瓶中设置 Cookie 重定向到外部 URL
- msal.js - ServerError:AADSTS50058:已发送静默登录请求,但当前登录的用户均不匹配请求的登录提示“
- java - W / System:资源未能调用释放
- bash - 我如何在找到特定模式之前找出上面的行
- parsing - 如何在 YAML 翻译文件中设置注释?
- java - 如何将值从 JTextField 存储到局部变量?
- java - 如何从 2 个不同的数组列表中对数组列表进行排序?像两个数组列表,性别和学生。如何按性别查看学生详细信息
- android - 在 Android Studio 中从 Api 创建 Spinner