Python Xpath难题。我可以选择链接,尝试单击,不可以

Python Xpath难题。我可以选择链接,尝试单击,不可以,python,selenium-webdriver,xpath,Python,Selenium Webdriver,Xpath,我的xpath标识了我想要单击的链接,在代码中,单击什么都不做 尝试了各种登陆链接的方式,它们都有效,但点击仍然无效 下面是xpath,它让我找到下面html中的链接: driver.find_element_by_xpath("//span[text()='2009 CR 00203']/ancestor::a").click() 我期待着点击工作,并旅行到一个新的页面,这是什么发生时,手动访问网站像一个典型的访问者 以下是相关的HTML: <td id="grid$row:47$ce

我的xpath标识了我想要单击的链接,在代码中,单击什么都不做

尝试了各种登陆链接的方式,它们都有效,但点击仍然无效

下面是xpath,它让我找到下面html中的链接:

driver.find_element_by_xpath("//span[text()='2009 CR 00203']/ancestor::a").click()
我期待着点击工作,并旅行到一个新的页面,这是什么发生时,手动访问网站像一个典型的访问者

以下是相关的HTML:

<td id="grid$row:47$cell:3" class="bookmarkablePageLinkPropertyColumnLink">
    <span>
    <!-- $Id: BookmarkablePageLinkPanel.html,v 1.2 2015/07/17 21:22:42 zcarter Exp $ -->
        <a href="?x=oETOKPmVudMuqONlkX1Tiv3Gtb5F5sedgQTMNLZ3tcAonXM5HcVTKxw7e-*sHrZvlNHuylIDXkrxaTtpmME4HA" id="grid$row:47$cell:3$link" onclick="$('#processingDialog').dialog('open');">
            <i id="id1d6"></i>
            <span>2009 CR 00203</span>
        </a>
    </span>
</td>
尝试javascript单击

ele = driver.find_element_by_xpath("//span[text()='2009 CR 00203']/ancestor::a")
driver.execute_script("arguments[0].click();",ele)

代码的一个问题是,在定位器中使用了
case
变量,但它被解释为字符串“case”

应该是

"//span[text()=" + case + "]/ancestor::a"
更新后的代码应该如下所示

for case in case_lst:
    driver.find_element_by_xpath("//span[text()=" + case + "]/ancestor::a").click()
    # grab data from resulting page after click
    driver.back() # returning to previous page with more case links....
如果出现无法找到该元素的错误,则该元素可能位于
IFRAME
中,或者需要添加等待clickable以确保加载该页面的一部分。下面是这两个案例的文档链接


我喜欢开箱即用的想法,但仍然会出现错误消息“NoTouchElementException:message:没有这样的元素:无法定位元素”,但实际上我在实际代码中使用了一个变量作为上述案例编号。我有一个病例编号列表,我正在反复浏览这个列表。那么,由于这是确切的代码,xpath是否可能不喜欢变量的用法,它有空格和all。driver.find_element_by_xpath(“//span[text()=case]/祖先::a”)?试试这个
驱动程序。find_element_by_xpath(//span[text()='“+str(case)+”]/concenter::a”)
和..@supputuri,这是一个宾果!哇,我怎么会错过呢。我有很多代码需要转换int和str,只是忽略了它。工作得很好!谢谢现在,我如何批准这个答案?你可以通过点击我答案左侧向下投票按钮下方的空心复选标记来接受答案。也可以随意投票。
"//span[text()=" + case + "]/ancestor::a"
for case in case_lst:
    driver.find_element_by_xpath("//span[text()=" + case + "]/ancestor::a").click()
    # grab data from resulting page after click
    driver.back() # returning to previous page with more case links....