невозможно найти элемент внутри тега <figure>в Selenium Webdriver Java - PullRequest
0 голосов
/ 21 марта 2020

У меня есть источник html ниже. В веб-драйвере селена с использованием приведенного ниже кода при подсчете количества веб-элементов, содержащих текст «AB C», он работает и возвращает 1. Но при попытке подсчета для текстов «PQR» или «XYZ» он возвращает 0.

(1) Как я могу получить 1 за PQR / XYZ? (2) Я хочу получить список значений всех элементов с class = "meter-value". ie. 0%, 100% и т. Д.

Пожалуйста, кто-нибудь может помочь? Я не могу понять.

List<WebElement>textDemo= driver.findElements(By.xpath("//*[contains(text(),'ABC')]")); System.out.println("Number of web elements: " +textDemo.size());

HTML: -

<div data-reactroot="">
    <div class="object-bar">
        <img id="spinner" src="data:image/gif;base64,XXXXlhIAAgAPUmANnZ2fX19efn5" hidden="">
        <a href="SOME URL" class="abc-link">
            <svg viewBox="0 0 24 24"></svg>
            <!-- react-text: 7 --> 
            ABC Home
            <!-- /react-text -->
            </a>
        </div>
    <div class="body">
        <figure>
            <div class="gauge">
                <div class="meter"></div>
                <div class="meter-value-container">
                    <div class="meter-value">0%</div>
                </div>
                </div>
            <figcaption>
                <!-- react-text: 15 --> 
                PQR
                <!-- /react-text -->
                <div>(40960 of 40960 left)</div>
            </figcaption>
        </figure>
        <figure>
            <div class="gauge">
                <div class="meter"></div>
                <div class="meter-value-container">
                    <div class="meter-value">100%</div>
                </div>
                </div>
            <figcaption>
            <!-- react-text: 23 --> 
            XYZ
            <!-- /react-text -->
            <div>(200 of 200 left)</div>
            </figcaption>
        </figure>
    </div>
</div>

Ответы [ 4 ]

0 голосов
/ 21 марта 2020

Я думаю, что я заработал, используя WebDriverWait непосредственно перед кодом, как показано ниже. Теперь он находит элементы.

new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='meter-value']")));
0 голосов
/ 21 марта 2020
Метод

text () не работает, если элемент HTML параллелен тексту. Попробуйте использовать «.» чтобы получить текст. Попробуйте как бело:

List<WebElement>textDemo= driver.findElements(By.xpath("//*[local-name()='figure']"));
System.out.println("Number of web elements: " +textDemo.size());
0 голосов
/ 21 марта 2020

Для 1 вопроса

PQR и XYZ - //figcaption PQR and XYZ

Только XYZ - //figcaption[contains(.,"XYZ")] Only XYZ

Только PQR //figcaption[contains(.,"PQR")] PQR

Для 2 вопроса

//div[@class = "meter-value"] meter-value

0 голосов
/ 21 марта 2020

Если вы хотите получить все узлы заголовка, попробуйте этот xpath,

//*[@class='meter-value']/parent::div/parent::div/following::figcaption

Если вы хотите искать по содержанию текста, попробуйте это,

//figcaption[contains(.,'PQR')] - Это должен вернуть 1 элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...