【问题标题】:How to click on a link based on text in a table using selenium如何使用硒单击基于表格中文本的链接
【发布时间】:2016-09-18 21:32:29
【问题描述】:

大家好,

我有下表,其中包含我需要选择的链接。在这个具体的例子中,我需要选择 DIY Payroll,但有时这会改变它在表格中的位置。当前的xpath是:

.//*[@id='catalog-category-div-1']/table/tbody/tr/td1/ul/li[4]/a

所以我做了一个:

By.xpath(".//*[@id='catalog-category-div-1']/table/tbody/tr/td[1]/ul/li[4]/a").click()

但问题在于它可以改变位置,它可以在 td[2] 或 td[3] 和 li[n'th postion]

我可以让 selenium 浏览表格并根据文本单击它。 By.linktext() 会在这里工作吗?

【问题讨论】:

标签: css selenium


【解决方案1】:

您可以使用以下代码,这些代码将处理动态更改。

  1. 你可以使用linkText()方法如下:

driver.findElement(By.linkText("DIY Payroll")).click();

  1. 如果你想使用 xpath,那么你可以使用下面的代码。

    driver.findElement(By.xpath(.//a[contains(text(),'DIY Payroll')).click();

如果您需要更多说明,欢迎您:)

【讨论】:

    【解决方案2】:

    我建议你试试By.linkText()By.partialLinkText()。它将找到包含所需文本的A 标记。

    driver.findElement(By.linkText("DIY Payroll")).click();
    

    您可能会遇到的几个问题:

    1. 链接文本在页面上可能存在多次。在这种情况下,找到一个很容易找到的元素(例如通过 id),它只是您想要的链接的父元素,然后从该元素中搜索。

      driver.findElement(By.id("someId")).findElement(By.linkText("DIY Payroll")).click();
      
    2. A 标签可能包含额外的空格、其他字符、大写等。在这些情况下,您只需尝试使用.partialLinkText() 或反复试验。

      李>
    3. 在某些情况下,我看到的链接不是A 标记或内部包含其他标记。在这种情况下,您将不得不寻找另一种方法来定位文本,例如 XPath。

    【讨论】:

      【解决方案3】:

      对于这种情况,您应该使用 CSS 选择器: 你可以试试:

      By.CssSelector("a.browse-catalog-categories-link")
      

      【讨论】:

      • 你好萌,如果我要根据文本选择特定链接..我该怎么做?
      【解决方案4】:

      您可以使用 XPath 来执行此操作。 //a 将选择所有 'a' 标签。方括号内的部分将选择带有文本“DIY Payroll”的所有内容。结合在一起,您将获得所需的解决方案。 //a[contains(text(),'DIY Payroll')]

      【讨论】:

      • SO 不赞成仅代码的答案。请花一点时间解释这段代码为什么以及如何解决所提出的问题,以便它更有用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多