2014-06-09 3 views
4

는 I는 카피 바라 선택기가 실행 직전 save_and_open_page 명령 (나는 또한 page.body, 그것은 동일합니다 확인했습니다)에 저장된 다음 HTML이있다 : 나는 다음과 같은 오류 메시지가 https://gist.github.com/davidkovaccs/8991af5bed1805277f52Capybara 선택기가 모든 필터와 일치하지만 전체 필터가 아닌 것은 무엇입니까?

을 '찾을 것으로 예상 xpath "// div [@ class = 'box']"9 번 일치하는 항목을 찾았습니다. "box_2001 attrkulcs1 : attrvalue 1 attrkulcs2 : attrvalue 2 attrkulcs3 : attrvalue 3", "box_2002 attrkulcs1 : attrvalue 1 attrkulcs2 : attrvalue 2 attrkulcs3 : attrvalue 3 attrkulcs4 : attrvalue4 : "box_2003", "box_1001", "box_1002 attrkulcs1 : attrvalue 1 attrkulcs2 : attrvalue 2 attrkulcs3 : attrvalue 3", "box_1003 attrkulcs1 : attrvalue 1" 선택기와 일치하지만 모든 필터가 아닌 "", "", ""을 (를) 발견했습니다. (Capybara :: ExpectationNotMet) '

발견 된 6 개의 일치 항목은 테스트를 실행할 때마다 6이 아닙니다. 그것은 4와 9 사이의 숫자입니다. "모든 필터가 아닌 선택기와 일치하는"문장이 무엇인지 이해가되지 않습니다. 내가 알기로 나는 어떤 필터도 사용하지 않고있다.

나는 다음과 같은 선택기를 시도했지만, 그들 모두 같은 오류 메시지를 제공합니다 : 나는 카피 바라 2.2.1도 2.3.0로 시도했습니다

have_xpath("//div[@class='box']", :count => 9) 
have_selector(:css, '.box', :count => 9) 
have_css('.box', :count => 9) 

. Selenium webdriver 2.42.0을 사용하고 있습니다.

브라우저 콘솔에서 $ x ("// div [@ class = 'box']") 길이를 실행하면 완벽하게 작동합니다.

답변

8

내가 공동있어 ... 문제를 재현 할 수없는입니다 (https://github.com/jnicklas/capybara/issues/1326)에서 트와 폴폴의 대답 :

"실제로 관련 필터가 없으면 실제로 필터 수와 가시 값 (기본값은 true)을 사용하고 있습니다. 그러나 말하기는 불가능합니다. 그러나 3 개의 빈 따옴표 세트는 3 명 중.상자 요소가 실제로 페이지에 표시되지 않았습니다. "

사실 이것은 문제 였기 때문에 화면에서 볼 수없는 요소를 검색하기 위해 선택기에 'visible : false'매개 변수를 추가해야했습니다.

1

'는 선택 일치하지만 모든 필터'수단 :

  • 은 선택 일치 :는 "DIV"
  • 필터 일치하지 않습니다 : 클래스 = '상자'

@를 그래서 당신은 항상 9 div를 가지고있는 것 같지만, 그들 중 일부는 예상되는 .box 클래스로 인식되지 않습니다.

원시 HTML을 수동으로 보면 (9 개의 div는 항상 올바른 .box 클래스가 첨부되어 있습니까?) 어떻게됩니까?

업데이트 :

가능성이 나는 선택 및 필터의 내 가정에서 잘못되었습니다. 전체 블록 "//div[@class='box']"가 선택하고 선택 필터가

또한 text: 'foo' 등과 같은 것들, 내가 프로젝트에 HTML을 붙여 및 카피 바라 (2.2.1) 및 모든 시험을 통과 업데이트 된 번들을

```

expect(response.body).to have_xpath("//div[@class='box']", :count => 9) 
expect(response.body).to have_selector(:css, '.box', :count => 9) 
expect(response.body).to have_css('div.box', :count => 9) 

```

그래서, 나는

+0

내 질문에 링크에서 html을 볼 수 있습니다. 상자 클래스 (선택기를 실행하기 바로 전에 capybara에 의해 생성 됨)가있는 9 div가 있습니다. https://gist.github.com/davidkovaccs/8991af5bed1805277f52 – seriakillaz

관련 문제