2017-08-04 92 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