Очистите все совпадающее содержимое с помощью функции 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

Как я могу этого добиться?
Любая реализация массива была бы лучшим вариантом?


person user3624000    schedule 01.04.2017    source источник
comment
Вам нужно сначала сохранить все элементы тега ‹table›, а затем идентифицировать все теги ‹a›, отметив атрибут href.   -  person Kushal    schedule 01.04.2017
comment
Вы пробовали driver.findElements()? Обратите внимание на дополнительные s для множественного числа.   -  person SiKing    schedule 01.04.2017
comment
@SiKing: Ты имеешь в виду вот так? String links =((WebElement) driver.findElement(By.xpath("//tr[@role='cad']//td[@class='c1']//a"))).getAttribute("href") Он работает ... Есть предложения ?? string тип данных не соответствует?   -  person user3624000    schedule 01.04.2017
comment
Привет @kushal ツ - Не могли бы вы поблагодарить бывшего, если можно? Не ясно..   -  person user3624000    schedule 01.04.2017


Ответы (2)


Попробуйте следующий код:

 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++;
    }
person Kushal    schedule 01.04.2017
comment
Красивый; он работает .. Тем не менее мне интересно, это наиболее эффективное решение ... Спасибо ANYways. - person user3624000; 01.04.2017

Попробуйте код ниже.

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"));
    }
person Akarsh    schedule 01.04.2017
comment
Довелось ли вам попробовать это решение? - person Akarsh; 02.04.2017