Подтвердить что ты не робот

Как получить идентификатор элемента при использовании Capybara для тестирования (Rails)

Я использую Capybara для написания теста в своем приложении, но теперь у меня есть ситуация, когда мне нужно прочитать id элемента внутри capybara, например

myid = page.find("#parentNode").first(".childClass").id

Рассмотрим, что у меня есть структура HTML

<div id="parentNode">
 <div id="childNode1" class="childClass">1</div>
 <div id="childNode2" class="childClass">2</div>
</div>

Обратите внимание: Я не пытаюсь прочитать содержимое дочернего элемента node, но идентификатор. Вышеприведенное выше, например.

Ожидаемый результат: childNode1 (идентификатор первого элемента с классом childClass

4b9b3361

Ответ 1

Вы почти близки к ответу. Единственное изменение вместо вызова id как метода, вы должны называть его как атрибут следующим образом

page.find("#parentNode").first(".childClass")[:id]

Ответ 2

В этом случае я использовал бы xpath вместо css. Заметьте, что я не профессионал в xpathing, поэтому сначала использую css, чтобы найти parentNode.

find(#parentNode).find(:xpath, div[1]).id

Попробуйте и посмотрите, работает ли он.

необязательно вы можете использовать css во втором поиске, а также использовать класс как критерии, так как он все равно найдет первый элемент.

Ответ 3

Получил ответ..!!

Мы можем использовать page.evaluate_script для достижения этого. Я использовал приведенный ниже код

page.evaluate_script('$("#parentNode .childNode").first().attr("id")')

Надеюсь, это поможет кому-то:)