2017-11-16 10 views
1

Selenium WebDriver, RSpec 및 Capybara로 테스트하고 있습니다.Capybara에서 모달 창을 스크롤하는 방법

모달 창에서 일부 필드를 성공적으로 채우게했습니다. 이제이 모달 창의 아래쪽에있는 버튼을 클릭하고 싶습니다. 언뜻보기에는이 버튼을 볼 수 없으므로 Capybara는 모달 창에서 아래로 스크롤해야합니다. 웹 페이지의

두 개의 관련 코드 조각이 :

within('.modal') do 
     find('.btn', text: ‘TextOnButton').scrollIntoView(true) 
end 

을하지만, 오류 메시지를 수신 :

<div class = “modal”> </div> 
    <button class=”btn …..”> TextOnButton ::after </button> 

나는 시도했다.

within('.modal’) do 
     page.execute_script 'window.scrollBy(0,100)' 
end 

을하지만 그는 메인 윈도우가 아닌 모달 창을 스크롤 : 텍스트 "TextOnButton"

로 볼 수 CSS를 ".btn"를 찾을 수 없습니다

나는 시도했다.

+0

HTML 스 니펫이 정확히 무엇을 의미합니까 ?? 버튼 요소가'.modal'에 있습니까?'

+0

Thomas 대단히 고마워요! 맞습니다. HTML/CSS 팝업입니다. 모호한 공식을 유감스럽게 생각합니다. – Constanze

+0

당신은 환영합니다 - 대답을 수락하는 것을 잊지 마십시오 (확인 표시) –

답변

0

뭔가를 시도 할 수 있습니다 당신이 이미에 코드를 실행하는 이해 모달,하지만 당신은 driver.switchTo(). window (handle)을 사용하여 모달로 먼저 전환했는지 궁금합니다.

+0

실제 시스템 모달이 아닙니다. 단지 HTML/CSS 팝업입니다. –

0

당신의 HTML 코드가 잘못된 가정하고 버튼 요소가 실제로 (텍스트 설명에서와 같이) 모달에 포함되어, 당신은

within('.modal') do 
    btn = find(:button, 'TextOnButton', visible: :all) 
    execute_script('arguments[0].scrollIntoView(true)', btn) 
    btn.click 
end