Geb Selector не выбирает - PullRequest
       44

Geb Selector не выбирает

0 голосов
/ 02 марта 2019

Я заметил, что в некоторых случаях селектор geb работает не так, как ожидалось.Когда я копирую css selecor, css path или xpath из консоли разработчика и использую их как селектор в geb, они не работают.В любом случае, в этом примере я не могу выбрать то, что хочу:

Сайт: https://money.cnn.com/data/fear-and-greed/

<div id="needleChart" style="background-image:url('//money.cnn.com/.element/img/5.0/data/feargreed/1.png');">
    <ul>
        <li>Fear & Greed Now: 72 (Greed)</li><li>Fear &amp; Greed Previous Close: 72 (Greed)</li>
        <li>Fear & Greed 1 Week Ago: 69 (Greed)</li><li>Fear &amp; Greed 1 Month Ago: 58 (Greed)</li>
        <li>Fear & Greed 1 Year Ago: 8 (Extreme Fear)</li>
   </ul>
</div>

Теперь я хочу получить текст с первого тега li, и этотмой код:

public class MoneyCnnFearAndGreed extends Page {
    static url = 'https://money.cnn.com/data/fear-and-greed'
    static content = {
        fearAndGreed { $("#needleChart").$("ul li")[0].text() }
    }
}

Browser.drive {
    to MoneyCnnFearAndGreed
    println fearAndGreed
}

Но результат пуст.Надеюсь, вы можете помочь мне здесь.

1 Ответ

0 голосов
/ 02 марта 2019

Ваш ul элемент списка скрыт, см. Соответствующий CSS-файл :

.feargreed #needleChart ul {
    visibility: hidden;
    height: 0;
    width: 0;
}

Geb основан на Selenium WebDriver, поэтому вы не можете взаимодействовать со скрытым контентом, так как Book of Geb четко гласит:

Мы хотим щелкнуть ссылку Geb, но не можем, потому что она скрыта (WebDriver не позволяет вам взаимодействовать со скрытыми элементами).

Следовательно, у вас нет шансов получить текстовое содержимое невидимого элемента, кроме как путем выполнения JS из теста Spock / Geb:

println js.exec("return document.querySelectorAll('#needleChart ul li')[0].textContent;")
...