2017-11-16 99 views
1

Selenium WebDriver、RSpec、Capybaraでテストしています。Capybaraのモーダルウィンドウをスクロールする方法

私はプログラムがモーダルウィンドウ内のいくつかのフィールドを正常に埋めるようにしました。今度は、このモーダルウィンドウの一番下にあるボタンをクリックします。一見すると、私はこのボタンを見ることができないので、Capybaraはモーダルウィンドウで下にスクロールする必要があります。

ウェブページの2つの関連コードスニペット:

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

私が試み:

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

がなく、エラーメッセージを受け取りました。テキスト "TextOnButton"

の可視CSS ".btn" を見つけることができません

私が試した:

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

をしかしその後、彼は、メインウィンドウではなく、モーダルウィンドウをスクロールします。

+0

HTMLスニペットとは正確にはどういう意味ですか?ボタン要素は '.modal'の中にあり、'

+0

ありがとうトーマス、それは動作します!あなたは正しいです、それは単なるHTML/CSSポップアップです。あいまいな処方には申し訳ありません。 – Constanze

+0

あなたは歓迎です - 答えを受け入れることを忘れないでください(チェックマーク) –

答えて

0

ような何かを試すことができます私はあなたがすでに上でコードを実行している理解モーダルですが、driver.switchTo()。window(ハンドル)を使用して最初にそのモーダルに切り替えるのは不思議ですか?

+0

実際のシステムモーダルではありません。それは単なるHTML/CSSポップアップです –

0

あなたのHTMLスニペットが間違っていると仮定して、ボタン要素が実際に(あなたのテキスト記述のように)モーダルに含まれている、あなたは

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