首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NoSuchElementException:无法单击div元素

NoSuchElementException:无法单击div元素
EN

Stack Overflow用户
提问于 2020-04-17 13:33:25
回答 4查看 91关注 0票数 0
代码语言:javascript
运行
复制
<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元素,但是抛出exception.My代码是:

代码语言:javascript
运行
复制
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:消息:没有这样的元素:无法定位元素:{“

”:“”,“选择器”:“//*@id=‘ext-gen1147’}”(会话信息: chrome=80.0.3987.163)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-04-17 13:35:55

尝试下面的解决方案,并检查您的元素不是动态的,它不在iframe中,如果它在iframe中,那么您必须切换到它,然后单击您的eelement。

代码语言:javascript
运行
复制
wait.until(EC.element_to_be_clickable((By.ID, "ext-gen1147"))).click()

代码语言:javascript
运行
复制
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()

注意:请将以下导入添加到您的解决方案中

代码语言:javascript
运行
复制
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/名称来识别正确的元素:

代码语言:javascript
运行
复制
 iframe = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.TAG_NAME, 'iframe')))
 driver.switch_to.frame(iframe)
票数 0
EN

Stack Overflow用户

发布于 2020-04-17 13:39:48

我想也许你需要先等能见度,也许这能帮你https://stackoverflow.com/a/19537085/2069610.例如:

代码语言:javascript
运行
复制
WebDriverWait wait = new WebDriverWait(driver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<"ext-gen1146>));
票数 0
EN

Stack Overflow用户

发布于 2020-04-17 13:56:44

单击dynamic,可以诱导WebDriverWait()和element_to_be_clickable()并跟踪css selector

代码语言:javascript
运行
复制
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.rp-icon-expanded[id^='ext-gen'][role='presentation']"))).click()

您需要导入以下库。

代码语言:javascript
运行
复制
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61272912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档