如何使用selenium

时间:2016-09-16 17:42:46

标签: css selenium

Table with links

大家好,

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

.//* [@ ID = '目录类别-DIV-1'] /表/ tbody的/ TR / TD 1 / UL /锂[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]中改变位置

我可以让硒经过表格并根据文字点击它。 By.linktext()可以在这里工作吗?

4 个答案:

答案 0 :(得分: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。

答案 1 :(得分:1)

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

  1. 您可以按如下方式使用linkText()方法:
  2. driver.findElement(By.linkText(“DIY Payroll”))。click();

    1. 如果您想使用xpath,则可以使用以下代码。

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

    2. 如果您需要进一步澄清,欢迎您:)

答案 2 :(得分:0)

在这种情况下你应该使用CSS选择器: 你能尝试一下:

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

答案 3 :(得分:0)

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