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>'
'IT박스' 카테고리의 다른 글
Entity Framework에 엔터티가 있는지 확인하는 일반적인 방법? (0) | 2020.12.24 |
---|---|
루비에서 문자열을 10 진수로 변환 (0) | 2020.12.24 |
Adding padding to an UIView (0) | 2020.12.24 |
Python / BeautifulSoup-요소에서 모든 태그를 제거하는 방법은 무엇입니까? (0) | 2020.12.24 |
EV (Extended Validation) 코드 서명 자동화 (0) | 2020.12.24 |