python - 即使元素存在,Selenium find_element 也会抛出异常
问题描述
我的代码:
soup = BeautifulSoup(driver.page_source,features="html.parser")
applications_domains = []
for card in soup.find_all("div", {"class":"ant-row"}):
for url in card.find_all("a"):
applications_domains.append(url.get("href"))
for aplications_domain in aplication_domains:
try:
WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,"//a[@href='" +
applications_domain + "']")))
driver.find_element_by_xpath("//a[@href='" + applications_domain + "']").click()
except:
soup = BeautifulSoup(driver.page_source,features="html.parser")
print(soup.find_all("a",{"href":applications_domain}))
print(f"test error {applications_domain}")
print("-----------------------")
我有一个问题,find_element_by_xpath
即使它存在也找不到元素。我仔细检查soup
了该元素是否确实存在并且它按照输出进行。
输出:
<a href="applications_domain"><b></b></a>
test error applications_domain
我有一个循环遍历每个应用程序域(包含来自每个应用程序域的数据href
)但是,它a href
大多数时候会找到并点击元素,但对于某些人来说却没有,我不知道为什么。
这是网站的html。有很多div id="application_name_list"
,每个都包含不同a href
的,我需要点击
<div class="ant-row" style="margin-left: -6px; margin-right: -6px;">
<div id="application_name_list" class="ant-col-8 dyff-home-app-search-result-item" style="padding-left: 6px; padding-right: 6px;">
<a href="/dyfflaunch/domain/gco/app/di_data_customer_experience_conversation_processor/features">di_data_customer_experience_conversation_processor<b></b></a>
</div>
<div id="application_name_list" class="ant-col-8 dyff-home-app-search-result-item" style="padding-left: 6px; padding-right: 6px;">
<a href="/dyfflaunch/domain/gco/app/di_kafka_configservice_agentqueuegroup_dim_v1-prod/features">di_kafka_configservice_agentqueuegroup_dim_v1-prod<b></b></a>
</div>
<div id="application_name_list" class="ant-col-8 dyff-home-app-search-result-item" style="padding-left: 6px; padding-right: 6px;">
<a href="/dyfflaunch/domain/gco/app/di_kafka_configservice_phoneinventory_dim_v1-prod/features">di_kafka_configservice_phoneinventory_dim_v1-prod<b></b></a>
</div>
</div>
enter code here
解决方案
这是一种非常通用的方法:
a_tags=driver.find_elements_by_xpath("//div[@id='application_name_list']//a")
for a_tag in a_tags:
a_tag.click()
如果您有示例不起作用,请在问题中添加一个。
推荐阅读
- reactjs - 无法在反应 UI 上显示 javascript 函数的返回值
- python - AttributeError:“NoneType”对象在将 DataFrame 保存到 xls 时没有属性“save”
- mongodb - 使用索引键更新 mongo 文档中的大型嵌入式数组的优化方法
- javascript - improving volume slider with HTML and JS
- oracle - 使用 OOB 功能选择最新的 n 个工单?
- mysql - 如何过滤排除 SQL 中某些值的信息?
- algorithm - 是否有任何算法可以在图中找到重叠边?
- kotlin - 导航后蓝牙重新连接到同一设备
- pandas - 如何“快速”在熊猫中针对某一列添加行数据值?
- vim - Vim - 命令行 - 上一个和下一个命令键映射