IT박스

Capybara 및 ChromeDriver를 사용하여 입력 필드에서 입력 입력을 시뮬레이션하려면 어떻게해야합니까?

itboxs 2020. 12. 24. 23:28
반응형

Capybara 및 ChromeDriver를 사용하여 입력 필드에서 입력 입력을 시뮬레이션하려면 어떻게해야합니까?


입력 필드에 문자열을 입력하고 Enter 키를 누르는 다음 도우미 메서드가 있지만 Enter 키를 누르지 않은 것 같습니다. 입력 필드에 입력 된 문자열을 보았지만 Enter 키를 눌렀을 때 발생하는 이벤트는 발생하지 않았습니다.

실제 브라우저에서 Enter 키가 예상 이벤트를 올바르게 실행하는지 테스트했습니다. 내가 무엇을 놓치고 있는지 잘 모르겠습니다.

def fill_and_trigger_enter_keypress(selector, value)
  page.execute_script %Q(
                          var input = $('#{selector}');
                          input.val('#{value}');
                          input.trigger("keypress", [13]);
                         )
end

편집하다:

나는 또한 소용이없는 다음을 시도했습니다.

find('#q_name').native.send_keys(:return)
find('#q_name').native.send_keys(:enter)

오류가 발생하지는 않지만 여전히 Enter 키를 누르지 않습니다.


find('#q_name').native.send_keys(:return)

나를 위해 작동합니다. 내 필드의 이름이나 ID가 없지만 유형이 입력되어 있으므로 다음과 같이 사용했습니다.

find('.myselector_name>input').native.send_keys(:return)

완벽하게 잘 작동합니다!


요즘 (Capybara 버전 2.5 이상) <enter>다음과 같은 방법으로 키를 시뮬레이션 할 수 있습니다 .

find('.selector').set("text\n")

이것은 \n여기서 매우 중요한 부분입니다.


일반적으로 page.execute_script를 실행할 때 페이지 콘솔에서 실행하는 것과 동일한 결과를 얻습니다. 콘솔에서 수동으로 실행 해보고 예상 한 결과가 나오는지 확인하십시오. 그게 보통 제가하는 일입니다. 브라우저 콘솔 창에서 필요한 js 코드를 작성하고 실행 중일 때 execute_script를 사용하여 카피 바라 코드에 붙여 넣습니다.


Capybara는 send_keys 유형 이벤트를 기본적으로 지원하지 않습니다. 셀레늄으로 내려 가서 할 수도 있고, https://github.com/markgandolfo/send-keys 젬을 사용해 볼 수도 있습니다.


그것은 나를 위해 작동합니다

page.execute_script("$('form.css-class/#form_id').submit()")

@Page.selector.send_keys :return

이것은 나를 위해 작동 selector합니다. 페이지 개체 요소의 요소는 어디에 있습니까?:selector, '<css selector>'

참조 URL : https://stackoverflow.com/questions/10866946/how-do-i-simulate-hitting-enter-in-an-input-field-with-capybara-and-chromedriver

반응형