Foreach не получает результаты xpath от узла - PullRequest
0 голосов
/ 06 ноября 2019

Я использую xpath webdriver, чтобы найти div в коде, и мне нужно получить данные о каждом узле этого div, но этого не происходит.

HTML:

<div class="elements">
    <div class="element"><div class="title">Title A</div></div>
    <div class="element"><div class="title">Title B</div></div>
    <div class="element"><div class="title">Title C</div></div>
</div>

Код PHP:

$elements = array();
$data = $driver->findElements(WebDriverBy::xpath("//div[@class='elements']//div[@class='element']"));
foreach ($data as $i => $element) {
    $elements[$i]["title"] = $element->findElement(WebDriverBy::xpath("//div[@class='title']"))->getText();
}

Result Array $ возвращаемых элементов:

Array
(
    [0] => Array
        (
            [title] => Title A
        )

    [1] => Array
        (
            [title] => Title A
        )

    [2] => Array
        (
            [title] => Title A
        )

)

Приведенный выше скрипт возвращает заголовок A только 3 раза. Мне нужно, чтобы он работал так, как будто в xPath [x] есть цифра. Например:

(//div[@class='elements']//div[@class='element'])[1]//div[@class='title'] для заголовка A (//div[@class='elements']//div[@class='element'])[2]//div[@class='title'] для заголовка B (//div[@class='elements']//div[@class='element'])[3]//div[@class='title'] для заголовка C

Я не могу использовать цифры, потому что xPath слишком велик и может испортить кодlot.

Конечно, правильный узел xPath в foreach не должен был работать?

1 Ответ

0 голосов
/ 06 ноября 2019

При использовании WebElement для поиска другого WebElement с xpath необходимо использовать текущий контекст . в пути

$element->findElement(WebDriverBy::xpath(".//div[@class='title']"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...