많은 유사한 텍스트 상자가있는 페이지가 있는데, 모두 JavaScript로 변경 리스너를 설치했습니다 (Coffeescript를 썼음에도 불구하고).테스트에서 내 (자바 스크립트) 변경 이벤트가 실행되지 않는 이유는 무엇입니까?
예 HTML :
<td class="team" data-node="64" id="team_64">
<label for="bracket_teams_attributes_(1)">(1)</label>
<input id="bracket_teams_attributes_name"
name="bracket[teams_attributes][name]" size="30" type="text" value="Team 1">
<input id="bracket_teams_attributes_id"
name="bracket[teams_attributes][id]" type="hidden" value="64">
</td>
변경 리스너는 커피 스크립트에 나타나는 : 난 그냥 app--을 사용하고있는 경우 성능 문제를 무시하고,이 의도 한대로 작동
nameTeam = (target) ->
send_put(t) for t in $(target)
send_put = (target) ->
newName = target.value
node=$(target).closest('td').data('node')
$.ajax
type: 'PUT'
url: $(target).closest('form').attr('action')
data:
'team[name]': newName
'bracket[node]': node
$ ->
$('input#bracket_teams_attributes_name').on 'change', (e) => nameTeam e.target
에 관계없이 방법 텍스트 필드를 변경하고 변경 이벤트가 발생하며 데이터베이스가 업데이트됩니다.
Javascript를 테스트하는 방법을 배우려고하면서이 테스트를 통해이 변경 이벤트를 트리거하는 코드를 작성하고 싶었습니다. 상수는 적절한 값이
이within(NODE_64_CSS) do
fill_and_click_script =
%Q(
$('#{NODE_64_CSS} #{INPUT_TEAM_CSS}').focus().val('#{new_name}');
$('#{NODE_64_CSS} #{INPUT_TEAM_CSS}').focus().trigger('change');
)
page.driver.execute_script(fill_and_click_script)
end
(그들은 원래로드로 페이지가 올바른지 확인하기 위해 테스트에 다른 곳에서 사용하고 있습니다) :이를 위해, 나는 카피 바라/자바 스크립트/jQuery를 할 경우 다음과 같은 비트가 있습니다.
내 테스트가 변경 리스너를 트리거하지 못하도록 막는 원인이 될 수있는 StackOverflow 및 블로그를 수색하는 데 많은 시간을 할애하여 Webkit 및 다양한 다른 방법을 사용하여 폼 값 변경/변경 이벤트 트리거 , 모두 아무 소용이 없습니다. 웹 킷과 send-keys의 일부 버전을 사용하는 경우 send_and_open_page
을 실행하면 페이지에 변경 내용이 표시되지 않지만 Selenium-Webdriver를 사용하면 을 수행합니다. 새 텍스트를 입력했는지 확인하십시오. 그럼에도 불구하고 페이지의 변경 리스너가 실행되지 않으며 데이터베이스가 변경되지 않습니다.
저는이 스택에 익숙하지 않았기 때문에 나는 분명히 잘못된 것을했을 것으로 기대합니다.하지만이 시점을 어디에서 봐야할지 모르겠습니다.
내 보석 환경이 포함되어 당신이이 문제를 해결해야 할 기분이 추가 정보가있다
cucumber (1.3.11)
~/.rvm/gems/ruby-2.0.0-p451/gems/cucumber-1.3.11
rails (3.2.13)
~/.rvm/gems/ruby-2.0.0-p451/gems/rails-3.2.13
cucumber-rails (1.4.0)
~/.rvm/gems/ruby-2.0.0-p451/gems/cucumber-rails-1.4.0
selenium-webdriver (2.42.0)
~/.rvm/gems/ruby-2.0.0-p451/gems/selenium-webdriver-2.42.0
capybara (2.2.1)
~/.rvm/gems/ruby-2.0.0-p451/gems/capybara-2.2.1
rspec-rails (2.14.1)
~/.rvm/gems/ruby-2.0.0-p451/gems/rspec-rails-2.14.1
capybara-screenshot (0.3.19)
~/.rvm/gems/ruby-2.0.0-p451/gems/capybara-screenshot-0.3.19
경우에, 나는 기꺼이 그것을 제공 할 수 있습니다.
는 업데이트 : 버그에서 거기 지점에 도달 (더 이상 유지 없습니다이나 그 하부 구조의 일부이기 때문에, 당연히)
나는 이제 내 자바 스크립트 통합 테스트 도구로 Culerity을 사용하려고하고있다 NoMethodError의 결과 인 Celerity - capybara-celerity gem 내의 'Cabybara : Server 인스턴스'에 대해 'url'이 정의되지 않았습니다.
내 문제에 관심을 가져 주셔서 감사합니다, 알렉스. –
죄송합니다. 다시 연락해 주셔서 너무 오래 걸렸습니다. 나는 내가 찾을 수있는만큼 많은 것을 시도해 왔고, 나는 그 길을 따라 물건들을 깨뜨렸다. 이제 내가 있던 곳으로 돌아 왔고, 변경된 청취자가 해고되지 않았 음을 나타내는 브라우저 측 출력이 없다는 것을 확인할 수 있습니다. –