NoTouchElementException:无法单击div元素

2024-09-30 04:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

<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: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='ext-gen1147']"} (Session info: chrome=80.0.3987.163)

enter image description here


Tags: divformidbydriverelementfindxpath
3条回答

尝试下面的解决方案,检查您的元素不是动态的,并且它不在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)

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

WebDriverWait wait = new WebDriverWait(driver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<"ext-gen1146>));

单击动态元素includeWebDriverWait()和element_to_be_clickable()以及后面的css selector

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.rp-icon-expanded[id^='ext-gen'][role='presentation']"))).click()

您需要导入以下库

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

相关问题 更多 >

    热门问题