2017-04-01 62 views
0

如何確保我的硒代碼能夠擦除XPath的所有匹配內容?
請幫我看看你的想法。使用XPath函數擦除所有匹配內容

例如,這些都是我的HTML標籤:

<tr class="1" role="r1"> 
    <td class="c1"> 
     <a href="www.google.com"> 
     </a> 
    </td> 
</tr> 
<tr class="2" role="r2"> 
    <td class="c2"> 
     <a href="www.youtube.com"> 
     </a> 
    </td> 
</tr> 
<tr class="3" role="c3"> 
    <td class="c3"> 
     <a href="www.facebook.com"> 
     </a> 
    </td> 
</tr> 

我希望我的硒代碼來從href標記的所有鏈接。
所以,下面是我的XPath:

String links = driver.findElement(By.xpath("//tr[@role='cad']//td[@class='c1']//a")).getAttribute("href"); 
System.out.println(links); 

,但只獲取前HREF輸出,即www.google.com

所需的輸出是:

www.google.com 
www.youtube.com 
www.facebook.com 

我怎樣才能做到這一點?
任何數組實現會更好的選擇?

+1

您需要先存儲

標籤的所有內容,然後通過檢查「HREF」屬性 – kushal

+2

你嘗試'driver.findElements()'識別所有標籤?注意多個元素的額外「s」。 – SiKing

+0

@SiKing:你的意思是這樣嗎? 'String links =((WebElement)driver.findElement(By.xpath(「// tr [@ role ='cad'] // td [@ class ='c1'] // a」)))。getAttribute(「 href「)'它的工作...任何建議? 'string'數據類型不匹配? – user3624000

回答

1

嘗試下面的代碼:

List<WebElement> elements= driver.findElements(By.xpath("//table/tbody/tr")); 

    int i =0 ; 

    while(i<elements.size()){ 

     WebElement childElement = elements.get(i).findElement(By.cssSelector("a")); 

    System.out.println(childElement.getAttribute("href")); 

    i++; 
    } 
+0

美麗;它工作..仍然我想知道,這是最有效的解決方案...謝謝ANyways。 – user3624000

1

試試下面的代碼。

List<WebElement> links = driver.findElements(By.xpath("//tr/td/a")); 

    for(int i=0;i<links.size();i++){ 
     System.out.println(links.get(i).getAttribute("href")); 
    } 
+0

你有機會嘗試這個解決方案嗎? – Akarsh

相關問題