Capybara 2.0으로 업그레이드한 후 항목 목록에서 첫 번째 링크를 클릭하는 방법은 무엇입니까?
이 경우 첫 번째 링크를 클릭하는 방법:
<div class="item">
<a href="/agree/">Agree</a>
</div>
<div class="item">
<a href="/agree/">Agree</a>
</div>
within ".item" do
first(:link, "Agree").click
end
그리고 나는 다음과 같은 오류를 받습니다.
Capybara::Ambiguous:
Ambiguous match, found 2 elements matching css ".item"
그리고 그것 없이.within
다음 오류가 발생했습니다.
Failure/Error: first(:link, "Agree").click
NoMethodError:
undefined method `click' for nil:NilClass
다음을 사용할 수 있습니다.
first('.item').click_link('Agree')
또는
first('.item > a').click
(기본 선택기가 :dll인 경우)
질문의 코드가 다음과 같이 작동하지 않습니다.
within ".item" do
first(:link, "Agree").click
end
다음과 같습니다.
find('.item').first(:link, "Agree").click
Capybara는 여러 개를 찾습니다..item
그래서 그것은 예외를 일으킵니다.저는 Capybara 2의 이러한 행동을 매우 좋게 생각합니다.
다음을 시도합니다.
within ".item" do
click_link("Agree", :match => :first)
end
출처:
- http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Actions#click_link-instance_method
- https://github.com/jnicklas/capybara#strategy
이 구문은 다음과 같은 기능도 마찬가지입니다.
within first(".item") do
click_link "Agree"
end
이러한 솔루션의 대부분은 Capybara의 훌륭한 대기 기능을 사용하지 않을 것입니다.
이 링크에서 제안하는 대로 하는 것이 좋습니다.
https://thoughtbot.com/blog/write-reliable-asynchronous-integration-tests-with-capybara#find-the-first-matching-element
불량:
first(".active").click
페이지에 아직 .active 요소가 없으면 먼저 0을 반환하고 클릭이 실패합니다.
좋습니다.
만약 당신이 정확히 하나가 있는지 확인하고 싶다면.
find(".active").click
첫 번째 요소만 원한다면,
find(".active", match: :first).click
Capybara는 클릭하기 전에 요소가 나타날 때까지 기다립니다.
참고:match: :first
일치하는 새 요소를 추가하면 다른 요소를 자동으로 클릭하기 때문에 더 취약합니다.
Xpath는 요소를 지정할 수 있습니다.아직 잘하진 못하지만, 뭐 그런 것 같아요.//div[@class='active'][1]/a
이것은 작동하거나 작동하지 않을 수도 있지만, 요점은 xpath가 일치하는 배열을 지정하고 특정 항목을 추출할 수 있다는 것입니다.당신은 이것과 일치할 수 있어야 합니다.
제 프로젝트 중 하나의 작업 예제:
page.find("div.panel", 텍스트: /Proposals/) 내에서 수행합니다.page.find('tr', 텍스트: /Foo/) 내에서 수행합니다.페이지입니다.have_xpath(으)로 지정해야 합니다. [3], 텍스트: @today)끝.끝.
first()가 항상 대기하는 것은 아니므로 다음과 같이 유용할 수 있습니다.
expect(page).to have_css("selector")
first("selector").click
사용이 간편합니다.
$('.item').find('a').first().click();
언급URL : https://stackoverflow.com/questions/14513377/how-to-click-first-link-in-list-of-items-after-upgrading-to-capybara-2-0
'programing' 카테고리의 다른 글
요소가 활성화되었을 때 indexpath.row를 가져오는 방법은 무엇입니까? (0) | 2023.05.31 |
---|---|
CSS에서 다중 변환을 적용하는 방법은 무엇입니까? (0) | 2023.05.31 |
iPhone 5 CSS 미디어 쿼리 (0) | 2023.05.31 |
테이블이 레일에 있는지 확인합니다. (0) | 2023.05.31 |
iOS - 코코아 포드에서 헤더 파일을 찾을 수 없는 빌드 실패 (0) | 2023.05.31 |