python - 使用 Selenium (python) 通过 id 或 xpath 定位按钮元素时遇到问题。元素似乎有多个 ID 名称
问题描述
我一直在尝试通过 ID、xpath、链接文本和部分链接文本来定位按钮,但每次都会出现“无法定位元素”错误。
元素的html如下:
<a href="https://s1.ebridge.com/ebridge/3.0/retrieve/search.aspx?search=new&guid=14f2de4c-b37a-4632-a593-48d8aa12b468" id="aView" onclick="clickme(this,'retrieve')" target="main">Retrieve</a>
它所在的页面位于登录屏幕后面,我可以毫无问题地通过该页面。这是我从开始到错误的代码:
>>> from selenium import webdriver
>>> from selenium.webdriver.common.keys import Keys
>>> from bs4 import BeautifulSoup
>>> import re
>>> import pandas as pd
>>> import os
>>> url = "https://s1.ebridge.com/ebridge/3.0/default.aspx?1"
>>> driver = webdriver.Firefox(executable_path="/Applications/Postgres.app/Contents/Versions/11/bin/geckodriver")
>>> driver.implicitly_wait(30)
>>> driver.get(url)
>>> username = driver.find_element_by_name("tbUserName")
>>> username.clear()
>>> username.send_keys("public")
>>> password = driver.find_element_by_name("tbPassword")
>>> password.clear()
>>> password.send_keys("public")
>>> file_cabinet = driver.find_element_by_name("tbFileCabinet")
>>> file_cabinet.clear()
>>> file_cabinet.send_keys("PINCHD")
>>> file_cabinet.send_keys(Keys.RETURN)
>>> driver.implicitly_wait(30)
>>> retrieve = driver.find_element_by_id("retrieve").click()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 360, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
'value': value})['value']
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="retrieve"]
看起来该元素有两个不同的 ID,我都尝试过但都没有成功(即“retrieve”和“aView”)。
我还尝试通过部分链接文本('Retrieve')和 xpath(//*[@id="aView"]) 进行搜索,但没有成功。
任何建议表示赞赏。
解决方案
推荐阅读
- pandas - Pandas qcut 使用相同的数据返回两个不同的结果
- scala - 通用类的伴随对象 | 斯卡拉
- angular - 为什么(=)在角度8中自动从url(查询字符串)中删除
- java - Android 片段和适配器问题
- azure-active-directory - 在 Azure AD 中处理 spa Sharepoint 在线应用程序的安全性
- java - 使用 bucket4j 的 API RateLimiting
- r - 与 R 中离散变量和分类变量的相关性
- c# - HttpClient无故超时
- amazon-web-services - 在 Azure DevOps 上使用 Terraform 部署到 AWS 时的 AssumeRole
- r - 有缺失值时如何计算均值?