Selenium - 寻找WebElement

时间:2017-08-04 23:35:42

标签: java selenium

<div class="hasGoals">
     <a class="ppS"> 1 </a>
     <a class="ppS"> 2 </a>   *
     <a class="ppT"> End </a>
<div class="hasGoals">
     <a class="ppS"> 3 </a>
     <a class="ppS"> 4 </a>
     <a class="ppT"> End2 </a>

如何通过编写driver.findElement()...

来获取标记的(*)元素

这不起作用:

driver.findElement(By.xpath("//div[@class='hasGoals']//a[@class='ppT']"))

我认为这种模式是正确的但有2个div类具有相同的类名。可能是问题的原因吗?我怎么处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

主要问题是您想要的元素除了包含它的文本外不是唯一的。有4个A标记包含类ppS,因此无法获得正确的元素,因此我们必须依赖包含的文本。为了通过包含文本获取元素,我们必须使用XPath。下面的XPath应该可以工作。

//a[@class='ppS'][.='2']

你可以把它扔进一个函数并重用它。

public void selectGoal(String s)
{
    driver.findElement(By.xpath("//a[@class='ppS'][.='" + s + "']");
}

由于您需要包含“2”的元素,因此您可以将其称为

selectGoal("2");

注意:此功能不会选择元素EndEnd2,因为它们是不同的类,ppT而不是ppS