查找具有多个元素的元素(Selenium webdriver Python 3)

查找具有多个元素的元素(Selenium webdriver Python 3),python,selenium,selenium-webdriver,xpath,css-selectors,Python,Selenium,Selenium Webdriver,Xpath,Css Selectors,我正在使用Selenium Chrome Webdriver Python 3在一个名为Inbox的页面上找到一个按钮,然后单击它,但我反复得到一个NoSuchElementException:消息:没有这样的元素:无法找到元素 这很可能是由于html中存在大量不间断空格,请参见以下内容: <tr> <td class="MENUCHOICE"> "&nbsp;&nbsp;&n

我正在使用Selenium Chrome Webdriver Python 3在一个名为Inbox的页面上找到一个按钮,然后单击它,但我反复得到一个NoSuchElementException:消息:没有这样的元素:无法找到元素

这很可能是由于html中存在大量不间断空格,请参见以下内容:

         <tr>
            <td class="MENUCHOICE">
               "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                       " == $0
               <a href="main.do?action=inbox">Inbox</a>
            </td>

这些不间断空格字符不是链接文本的一部分,所以您不需要将它们包含在锚定选择器中。。。试一试

driver.find_element_by_link_text('Inbox')  #  or driver.find_element_by_link_text('INBOX')

您可能还需要等待链接变为可点击:

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

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[.="Inbox"]')))

使用类名来查找元素怎么样?我只关注不间断的空格字符,因为我已经尝试了查找元素,但没有像您提到的那样包含它们。在我的完整代码中有一个time.sleep40,以便有足够的时间使链接成为可点击的。@Neuro_Prog,如果页面URL不是私有的,您可以共享它吗?不幸的是,该页面是VPN的一部分。然而,我确实在前面的问题中提供了页面的完整HTML代码以及我自己的代码:@Neuro_Prog,考虑到提供的HTML驱动程序。通过链接查找元素\u文本“收件箱”应该可以很好地工作。我不知道你是怎么利用那段时间的。睡觉,所以很难说是怎么回事。请用WebDriverWait从我的答案中尝试这句话,并让我知道结果谢谢你的帮助。不幸的是,我在运行实现时遇到了TimeoutException。我在收件箱中运行了“WebDriverWaitdriver,30.untelec.element\u to\u be\u clickableBy.LINK\u TEXT”。我以前尝试在此页面上显式等待时遇到过这种情况。我也很难说出这里的错误,因为我已经用我当前的设置在许多其他网站/页面上成功地使用了selenium
driver.find_element_by_xpath('//a[.="Inbox"]')
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[.="Inbox"]')))