2017-04-01 61 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