Java (Selenium) - получение ссылки из исходного кода

327
19 января 2017, 03:30

В Firefox с помощью инструмента "Исследовать элемент" в интересующем куске кода есть ссылки, которые хочу брать используя методы библиотеки Selenium. Вот этот кусок исходного кода, который вижу в Firefox

<table class="gray-table">
                <tbody><tr class="">
                    <th style="width: 230px;">Производитель</th>
                    <th>Наименование</th>
                    <th style="width: 140px; text-align: center;">Цена</th>
                </tr>
                    <tr class="">
                        <td>KRAFTTECH</td>
                        <td><a href="ССЫЛКА, КОТОРУЮ НУЖНО ВЗЯТЬ" target="_blank">Комплект сцепления</a></td>
                        <td style="text-align: center;"><noindex><a target="_blank" href="/Web/price/art/W01210H9/manufacturer6107/KRAFTTECH" rel="nofollow">Найти</a></noindex></td>
                    </tr>
                    <tr class="">
                        <td>VALEO</td>
                        <td><a href="ССЫЛКА, КОТОРУЮ НУЖНО ВЗЯТЬ" target="_blank">Диск</a></td>
                        <td style="text-align: center;"><noindex><a target="_blank" href="/Web/price/art/VW09/manufacturer21/VALEO" rel="nofollow">Найти</a></noindex></td>
                    </tr>
            </tbody></table>

Те ссылки, которые хочу взять тут обозначил как "ССЫЛКА, КОТОРУЮ НУЖНО ВЗЯТЬ". Пробовал использовать различные методы поиска по имени тэга, пытался искать используя имя класса и т. д. Перепробовал разные варианты, пока не удалось получить желаемый результат. Буду благодарен помощи!

Answer 1

Нужно пробежаться в таблице по всем tr(c помощью FindElements) найти в каждом второй td и взять тег a Дальше у вас будет лист элементов, через который вы получите как .Text так и саму ссылку .GetAttribute("href") Не знаю как в Java List называется, напишу на шарпе, уверен разберетесь:

List<IWebElement> linkElements = driver.FindElements(By.CssSelector("tr td:nth-child(2) a")).ToList();
foreach(IWebElement link in linkElements)
{
    string href = link.GetAttribute("href");
}

Answer 2

наш элемент находится в table > tbody > tr > td > a. Значит нужно искать там

    // находим все элементы 
    List<WebElement> elements = getDriver().findElements(By.cssSelector("table > tbody > tr > td > a ")); 
    for (WebElement element : elements) {
        System.out.println(element.getAttribute("href")); // печатаем значение 
    }
READ ALSO
Получить root path Java (Spring MVC)

Получить root path Java (Spring MVC)

Мне в крон-методе необходимо получить рутовый путьРанее, в контроллерах, я использовать UriComponentBuilder, но в кроны лежат в сервисах и никакой...

352
вопрос по обратным фокусам в EditText

вопрос по обратным фокусам в EditText

Есть 3 полякогда заполняется поле №1 фокус перескакивает на поле №2

315
Почему интерфейсы упрощают жизнь?

Почему интерфейсы упрощают жизнь?

Ранее никогда не писал собственные интерфейсы для "упрощения жизни"Почему? Что в них такого интересного?

243