2014-04-28 2 views
1

인 필드를 찾을 수 없습니다. 오이가 HTML5 type="number"이있는 입력란을 찾는 데 문제가 있습니다. 나는 그들이 브라우저에서 보는 방식에 대한 큰 팬이 아니지만, 모바일에서 숫자 키보드가 필요한 몇 가지 필드가 있는데,이 필드를 얻는 가장 쉬운 방법 인 것 같습니다. SimpleForm을 사용하여 양식을 작성하고 설정할 때 :as => :text 모두 작동하지만, :as => :number으로 설정하면 입력란이 채워지지 않습니다. 나는 어떤 오류도 내지 않는다, 들판은 단지 채우게되지 않는다.셀렌이 유형 번호가

And I fill in "application_form_age" with "52" 

는 다음이 태그가 채워되지 않습니다 : :이 같은 단계가있을 때

는, 구체적으로

<input class=​"numeric integer required" id=​"application_form_age" min=​"0" name=​"application_form[age]​" size=​"50" step=​"1" type=​"number">​ 

을하지만,이 하나의 작품 :

<input class=​"string required" id=​"application_form_age" name=​"application_form[age]​" size=​"50" type=​"text">​ 

또한 @javascript 시나리오에서만 발생합니다. @javascript가 필요하지 않고 시나리오가 브라우저를 시작하지 않는 상황에서도 제대로 작동합니다. 사물의

버전 :

capybara (2.2.1) 
cucumber (1.3.14) 
selenium-webdriver (2.41.0) 
simple_form (2.1.1) 
webrat (0.7.3) 

Firefox 29.0 

나는 난처한 상황에 빠진입니다. 내 응용 JS 및 CSS 무리를 꺼내 봤는데, 내가하고있는 일이 그것을 깨뜨리는 지 알 수 있었지만 그걸로는 아무런 문제가 없었다. 필자는 테스트 환경에 HTML5 형식 번호가 없도록 해당 필드를 강제로 패치하는 것만 같지만 그런 식으로 살고 싶지는 않습니다. 다른 사람이 이것을보고 있습니까? 나는 그것에 대한 어떤 언급도 찾을 수 없었기 때문에 그것이 내가하고있는 것처럼 보입니다. 그러나 나는 그것을 알아낼 수 없었다.

답변

1

먼저,이 프레임 워크와 관련하여 혼란 스러울 것 같습니다. 오이는 어떤 방식 으로든 브라우저를 자동화하지 않는 BDD 프레임 워크이므로이 질문은 아무 관계가 없습니다. (이것이 내가 질문 제목에서 제거한 이유입니다).

ATDD 프레임 워크 인 Capybara를 사용하는 것처럼 보입니다. 문제를 진단하기 위해 사용하는 카피 바라 코드를 우리에게 보여줄 수도 있습니다.

Selenium WebDriver를 사용한다고 가정 할 때 Selenium이 <input type="number">으로 잘 작동하는지 확인할 수 있습니다 (Firefox 28로 테스트 됨, 셀레늄 - webdriver (2.41.0) 지원).

require 'selenium-webdriver' 

driver = Selenium::WebDriver.for :firefox 

DEMO_PAGE = <<-eos 
    data:text/html, 
    <input class=​"numeric integer required" id=​"application_form_age" min=​"0" name=​"application_form[age]​" size=​"50" step=​"1" type=​"number"> 
eos 

driver.get(DEMO_PAGE) 
driver.find_element(:tag_name, 'input').send_keys('25') 

이 기능을 테스트하려면 Capybara를 사용하여 비슷한 데모를 만들 수 있습니다.

데모가 작동하면 응용 프로그램을 자세히 살펴볼 필요가 있습니다. 다른 경우, 카피 바라 개발자를위한 티켓을 준비하십시오.

+0

Firefox를 28 버전으로 다시 설정하면 Selenium 문제가 해결됩니다. – Steve

2

좋아요, 파이어 폭스가 숫자 입력 필드 지원을 비활성화하는 옵션을 가지고 있음을 발견했습니다 : 'dom.forms.number'.

그래서 env.rb에 다음 행을 추가하면 숫자 입력이 비활성화되고 테스트가 다시 작동합니다.

Capybara.register_driver :selenium do |app| 
    profile = Selenium::WebDriver::Firefox::Profile.new 
    profile["dom.forms.number"] = false 
    Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile) 
end 
관련 문제