<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>
答案 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");
注意:此功能不会选择元素End
或End2
,因为它们是不同的类,ppT
而不是ppS
。