Как забрать данные в определённой строке из таблицы при условии что есть номер?

229
04 ноября 2021, 01:10

Есть таблица в которой есть номер лота и цена.
Условие: нужно собрать цену из той строки таблицы где есть номер ЕИС.
Ход мыслей такой:
- На странице нахожу все элементы по тегу tr.
- Элементы перечисляю и если есть в строке Номер ЕИС, то забираю цену.

Подскажите как реализовать это в selenide или selenium? Спасибо

 ElementsCollection trElements = $$(tagName("tr"));
    for (SelenideElement trElement : trElements) {
        if (trElement имеет НОМЕР ЕИС) 
        {
            //забрать из элемента(строки) цену.
        }
    }

<table class="result-table">
<tbody>
    <tr>
        <td>
            <div class="column-main">
                <h6>
                    Номер ЕИС
                </h6>
                <p>
                    <a class="eis_number" target="target_number">31908504358</a>
                </p>
            </div>
        </td>
        <td class="price">
            <p>
                <strong>
                    4 457 757,98
                </strong>
                <span>
                    руб.
                </span>
            </p>
        </td>
    </tr>
</tbody>

Answer 1

Попробуй так через Selenium WebElement

        List <WebElement> table = driver.findElements(By.xpath("//table[@class='result-table']/tbody/tr"));
        for(int i = 0; i < table.size(); i++){
            String eisNum = table.get(i).findElement(By.xpath("./td[1]/div/h6")).getText();
            if(eisNum.contains("Номер ЕИС")){
                String price = table.get(i).findElement(By.xpath("./td[2]/p/strong")).getText();
                System.out.println("Price: " + price);
            }
        }
Answer 2

Т.к. в первом элементе нет пути td/div, настроил счётчик со второго.

      SelenideElement table = $(byId("Result"));
    ElementsCollection trElements = table.$$(byXpath("id('Result')/table/tbody/tr"));
    for (int a = 1; a < trElements.size(); a++) {
        String eisNum = trElements.get(a).$(byXpath("td/div/h6")).getText();
        if (eisNum.contains("Номер ЕИС")) {
            String price = trElements.get(a).$(byXpath("td/p/strong")).getText();
            System.out.println("Price: " + price);
        }
    }
    }
READ ALSO
Как получить body от Post-запроса на java

Как получить body от Post-запроса на java

Я получаю от php-сервера запрос на обработку данных, которые в формате json хранятся в body, как я могу достать именно эту json-строчку из request Post-запроса?

78
Чтение txt файлов linux

Чтение txt файлов linux

Добрый день есть код который должен читать файлы txt в паке, в эту папку падают файлы с названием modemVKjUeK каждый раз имя modem остаётся прежним...

190
Автоматическая подстановка тире

Автоматическая подстановка тире

Цель: писал поле для ввода номера снилс, и делал, чтобы он сам ставил тире через каждые три символа

95