Как получить HTML-страницу в валлаби - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь запустить функцию fin, но по какой-то причине я получаю ноль. Элемент, который я ищу, должен быть там, как я могу получить HTML, чтобы увидеть, что пошло не так?

Ответы [ 2 ]

1 голос
/ 21 июня 2019

У меня есть две вспомогательные функции, которые получают сеанс wallaby.

Первая печатает видимый текст в STDOUT:

  def print_page_text(session) do
    session |> Wallaby.Browser.text() |> IO.inspect()
    session
  end

Вторая функция печатает полный исходный текст HTML-страницы в STDOUT:

  def print_page_source(session) do
    session |> Wallaby.Browser.page_source() |> IO.inspect()
    session
  end

При возврате сеанса этиФункции могут использоваться между обычными запросами / утверждениями wallaby:

session
|> visit("/example/page")
|> print_page_text()
|> assert_text("Hello World!")

Другая полезная функция - Wallaby.Browser.take_screenshot / 2

0 голосов
/ 21 июня 2019

Я не знаю, является ли это вашей проблемой или нет, но когда я попробовал wallaby на этом html:

<p class="results"><div class="green">That's all folks!</div></p>

с этим find():

find(css(".results", count: 1))

Я получил ошибку:

** (Wallaby.QueryError) Ожидается, что найден 1 видимый элемент, который соответствует css '.results', но 0 видимых элементов найдено.

Но, если я изменю html на это:

<div class="results"><span class="green">That's all folks!</span></div>

и я использую тот же find() (который, кстати, не возвращает список, так что не следуйте этому с List.first()), тогда валлаби найдет элемент. Согласно спецификации html5, вы не можете поместить тег div в тег p, а открывающийся тег div заставит браузер закрыть тег p , например:

                   HERE
                    |
                    V
<p class="results"></p><div class="green">That's all folks!</div></p>

Я не думаю, что wallaby может проанализировать нелегальный html и найти тег p. Вы можете попробовать запустить html через html validator , прежде чем пытаться использовать wallaby.

...