2016-11-09 1 views
3

내 기능 테스트를 위해 selenium-webdriver과 JS 사용 Capybara를 사용하고 있습니다.Rspec : Capybara가 작동하지 않습니다.

내가 선택 상자 여기

그리고에서 브랜드를 선택하고자는

다음
<select id="campaign_brand_id" name="campaign[brand_id]" class="form-control"> 
    <option value="">Choose a Brand</option> 
    <option value="1">Brand1</option> 
    <option value="2">Brand2</option> 
</select> 

내가 시도했다

before(:each) do 
    @brand = FactoryGirl.create(:brand, name: 'Brand1', company: member.company) 
end 

scenario 'Create a new campaign - with minimum valid data', js: true do 
    visit new_brands_campaign_url(host: "skreem.dev", port: Capybara.current_session.server.port) 

    select (@brand.name), from: 'campaign_brand_id' 
    click_button 'Create Campaign' 
end 

내 테스트 코드 내 HTML입니다 다음도 ...

1. select (@brand.name), from: 'campaign[brand_id]' 
2. select (@brand.id), from: 'campaign_brand_id' 
3. find('#campaign_brand_id').find(:xpath, "option[#{@brand.id}]").select_option 
4. within '#campaign_brand_id' do 
    find("option[value='1']").click 
    end 

다른 카피 바라가 ... fill_inchooseclick_button ... 내가보기에 collection_select을 사용하고 작업하는 것처럼 명령이 문제의 원인인가요?

enter image description here

+0

작동하지 않는 것이 더 구체적 일 수 있습니까? –

+0

'select @ brand.name, from : "campaign_brand_id"'할 때 발생하는 오류는 무엇입니까? –

답변

1

나는 거의 XPath는 그것을했다 생각하지만, 나는 그것으로 인해 얼마나 취성에 피하려고. 최근에 나는 단지 아니라 셀레늄보다 capybara-webkit 내 테스트를 실행하는거야하지만

나는 다음 코드를 사용

option = @brand.name 
find('#campaign_brand_id').find(
    'option', text: /#{option}/i).select_option 

나는 나 이와 같은 선택으로 텍스트를 사용하는 사용자에게 표시하고 따라서 기능 테스트에서 찾아야 할 사항입니다. 또한 정규식을 사용하여 텍스트를 대소 문자를 구분하지 않도록 일치 시켰습니다. 위/아래 단어 구분과 같은 변덕스러운 UI 변경으로 인해 실패한 테스트를 방지합니다. 또한 CSS의 어색한 문제 text-transform에서 텍스트의 대/소문자가 혼동하는 것을 막을 수 있습니다. 문제가 계속 지속되면


업데이트

, 당신은 몇 가지 디버깅을 수행해야합니다. 내 제안은 pry debugger 보석입니다. gemfile에 추가하고 실패한 행 위의 시나리오에 binding.pry 행을 포함 시키십시오. 올바르게 기억하면 셀렌은 전경에서만 실행되므로 페이지를 보면서 대화 형 후두리 콘솔을 사용할 수 있습니다.

먼저 선택 상자 (find('#campaign_brand_id'))와 해당 옵션을 찾은 다음 명령을 실행하는 동안 셀렌 브라우저가 수행하는 작업을 확인하십시오. 사용자 정의 당신의 선택 상자를 수정 JS/CSS 있습니까

  • 어떤 오류가 있거나 자동으로
  • 실패 : 당신은 여전히 ​​운이없는 경우

    , 어쩌면이 질문은 도움이 될 것입니다?execute_script를 통해 페이지와 상호 작용

  • 봅니다
+0

여전히 동일한 오류가 발생합니다 ... fill_in, choose, click_button과 같은 다른 capybara 명령은 정상적으로 작동합니다 ... 선택 문제를 이해할 수 없습니까 ??? 추가 된 ScreenShot .... –

0

사용 괄호없이 선택 (자세한 내용은 selenium driver docs 참조)

select @brand.name, from: 'campaign[brand_id]' 

또는

select @brand.name, from: 'campaign_brand_id' 

당신이 ID 또는 이름을 사용할 수 있습니다 옵션 from

양식을 사용자 정의하고 실제 선택이 숨겨져있는 경우 다른 케이스를 사용해야하는 것보다

관련 문제