2016-09-16 28 views
0

Table with links如何链接基于表中的文本中单击使用硒

大家好,

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

.//*[@id='catalog-category-div-1']/table/tbody/tr/td 1/UL /锂[4] /一个

所以我做了:

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

但问题是这里的是,它可以改变位置,它可以在TD [2]或TD [3]和Li [第n现在的位置]

我可以让硒穿过桌子并根据文字点击它。 By.linktext()会在这里工作吗?

+0

你用By.linktext()试过了吗?对网页上的任何元素执行任何操作都可能非常棘手,因为它可能取决于多层元素,就像这里您尝试访问元素并单击该链接,但必须以各种方式尝试实现此操作,找到该元素是一部分! –

回答

0

你应该为这种情况下使用CSS选择器: 你可以尝试:

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

Hello Moe,如果我想根据文字选择特定的链接,我该怎么做? –

0

您可以使用XPath来做到这一点。 // a将选择所有'a'标签。方括号内的部分将选择文字为“DIY Payroll”的所有内容。结合在一起你就可以得到理想的解 // a [包含(text(),'DIY Payroll')]

+0

代码只回答在SO上皱起了眉头。请花一分钟解释为什么以及如何使用这段代码解决问题,以便它更有用。 – JeffC

1

我建议您尝试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这样的文本。

相关问题