【问题标题】:Trying to select link text within a table cell if the desired text is also within the cell如果所需的文本也在单元格中,则尝试在表格单元格中选择链接文本
【发布时间】:2019-07-12 18:59:37
【问题描述】:

所以我有一个包含文本和链接的表格单元格。现在,此表中的每一行都有相同的文本链接超链接标题“[详细信息]”,但位置会根据您所在的行而改变。

例如,单元格将如下所示:“我想要的文本”[详细信息]

我希望能够根据该单元格中的文本转到正确的链接,但是在弄清楚如何在 Python 中对其进行编码时遇到了一些问题。单击此表中的一行后,它会将其移动到表中的位置,因此无法使用 Xpath。

这是我尝试过的:


MyText = driver.find_element_by_xpath("//span[text()='My Desired Text']")
MyText.find_element_by_partial_link_text("Details").click()



def click_me(myString):
    WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//td/span[.='" + myString + "']//following::span[2]"))).click()

click_me("My Desired Text")

但我认为我需要使用if 语句才能真正获得所需的结果。任何建议将不胜感激。


<td>
                            <span>My Desired Text</span>
                            <span class="HSpacer10"></span>
                            <span class="commonLink" onclick="handleMyEvents(EVENT_EDIT_PKG, 60000,1);">[Details]</span>


                        </td>

【问题讨论】:

  • 你能把td的html与文本和链接分享一下吗? link是span的子节点还是兄弟节点?
  • 将html添加到我上面的问题中。
  • 试试这个 xpath //span[normalize-space(.)='My Desired Text']/following-sibling::span[.='[Details]']
  • @supputuri 找不到使用该方法的元素。

标签: python selenium xpath webdriverwait xpath-1.0


【解决方案1】:

由于该表格由多个文本和与详细信息相同文本的关联链接组成,您可以编写如下方法:

def click_me(myString):
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//td/span[.='" + myString + "']//following::span[2]"))).click()

现在您可以使用任何所需文本调用此方法以单击相关链接:

click_me("My Desired Text")
# or
click_me("My Text")
# or
click_me("Text")

【讨论】:

  • 为了澄清我自己,我应该用[.='"My Desired Text"'] 替换[.='" + myString + "'] 对吗?
  • @Loons22 否,将click_me("My Desired Text") 内的My Desired Text 替换为实际文本。我们将实际字符串作为参数传递给单击关联链接的方法。
  • 似乎找不到元素,一直超时。将My Desired Text 替换为实际文本,但在代码中保留+ myString + 时仍然无法正常工作。
  • 好的,所以我将它更改为我需要的确切文本,这确实有效,但是有没有办法让它只接受部分文本?例如,我做了My Desired Text,它不起作用,因为该文本的末尾还有一个数字。当我添加该号码时,例如 My Desired Text 1.00 确实有效。
  • @Loons22 这似乎是一个完全不同的用例。你能对你的新要求提出一个新问题吗? StackOverflow 贡献者将很乐意为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多