python - NoSuchElementException:无法单击 div 元素
问题描述
<td role="presentation" valign="top" class=" x-trigger-cell x-unselectable" style="width:28px;" id="ext-gen1147">
<div class="x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first rp-icon-expanded" role="presentation" id="ext-gen1146">
</div></td>
我试图单击此 div 元素但抛出异常。我的代码是:
driver.find_element_by_xpath("//div[@id='ext-gen1146']").click()
driver.find_element_by_xpath("//*[@id='ext-gen1147']").click()
driver.find_element_by_xpath("//div[@class='x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first rp-icon-expanded' and @id='ext-gen1146']")
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{"method":"xpath","selector":"//*[@id='ext-gen1147']"}(会话信息:铬=80.0.3987.163)
解决方案
尝试以下解决方案并检查您的元素不是动态的并且它不在 iframe 内,如果它在 iframe 中,那么您必须切换到它然后单击您的 eelement。
wait.until(EC.element_to_be_clickable((By.ID, "ext-gen1147"))).click()
或者
wait.until(EC.element_to_be_clickable((By.XPATH, "x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-first rp-icon-expanded"))).click()
注意:请在您的解决方案中添加以下导入
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
要切换到 iframe,您可以使用以下代码,请确保您只有一个 iframe,否则您可以在切换之前使用 iframe 的 ID/名称来识别正确的元素:
iframe = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.TAG_NAME, 'iframe')))
driver.switch_to.frame(iframe)
推荐阅读
- git - 有没有办法将多模块 Maven 项目拆分为不同的 Git 存储库?
- postgresql - postgresql 在嵌套循环期间不会使用索引进行字符 LIKE 比较
- javascript - jQuery 选择器找不到我的 SweetAlert2 元素
- python-3.x - 在 Python 中列出的链接中的 searchDelete
- python-3.x - 从 postgresql 数据库中选择一个随机行返回“无”
- azure-aks - Azure-k8s:无法删除负载均衡器服务?
- javascript - 将 Markdown 文件动态导入 Svelte 引发 404 错误
- android - StateFlow 汇集在一个协程中
- mysql - 获取总和小于或等于数据集中值的记录
- node.js - Sequelize + postgres,如何计算连接池大小?