NoSuchElementException:消息:没有这样的元素:无法找到使用Selenium和Python单击span元素的元素

NoSuchElementException:消息:没有这样的元素:无法找到使用Selenium和Python单击span元素的元素,selenium,selenium-webdriver,xpath,css-selectors,webdriverwait,Selenium,Selenium Webdriver,Xpath,Css Selectors,Webdriverwait,我试图单击位于div类内部的span类。以下是HTML: <div class="modal-content scrollbar"> <div class="block block-always-show action-black-box waves-effect"> <div class="icon xray-icon"></div> <span class=&

我试图单击位于div类内部的span类。以下是HTML:

<div class="modal-content scrollbar">
  <div class="block block-always-show action-black-box waves-effect">
    <div class="icon xray-icon"></div>
    <span class="txt">Xray - Test Product Research</span>
</div>
我发现以下错误:

NoSuchElementException: Message: no such element: Unable to locate element: 


提前感谢您,并感谢您对解决方案的任何帮助。

您走的是正确的道路,但您的xpath似乎只需要稍微调整一下。 以下是两个应找到相关元素的示例:

此xpath需要
span
标记中包含的确切文本:

//span[包含(@class,'txt')和text()=“X射线-测试产品研究”]

下一个xpath接受
span
标记之间的文本片段:

//span[contains(@class,'txt')和contains(text(),'Xray')]


在尝试单击元素之前,您可能仍然需要一个小的等待/时间延迟,以便在页面上加载元素

要单击文本为X射线-测试产品研究的元素您必须使
元素可单击()
,并且您可以使用以下任一方法:

  • 使用
    CSS\u选择器

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.modal-content.scrollbar span.txt"))).click()
    
  • 使用
    XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='modal-content scrollbar']//span[@class='txt' and contains(., 'Xray - Test Product Research')]"))).click()
    
  • 注意:您必须添加以下导入:

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

工具书类 您可以在以下内容中找到有关的讨论:


您可以发布页面的url吗?检查您的元素是否存在于IFrame中可能是XPath有问题。您可以将其粘贴到控制台中,并查看是否得到任何结果
$x(“//span[contains(@class,txt)和contains(text()='Xray-Test Product Research')”)
如果没有,请尝试此
$x(//span[@class='txt'和contains(text(),'Xray')])
注意:如上所述,确保此元素不在iframe中。
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='modal-content scrollbar']//span[@class='txt' and contains(., 'Xray - Test Product Research')]"))).click()
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC