2017-08-04 124 views
-2
<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()...硒 - 寻找WebElement

得到标记(*)元素这不起作用:

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

我认为这种模式是真实的,但也有2具有相同类名的div类。它可能是问题的原因吗?我该如何处理?

+1

在一个html页面上,您可以通过多种方式获取元素:通过xpath,通过cssselector ...试一试,不要问这样一个太笼统的问题。如果你有麻烦,然后问这里 –

+0

@TuyenNguyen我试过了,但我无法弄清楚我该如何做到这一点,我试过xpath,但它没有奏效。 – gingerdd

+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