2017-03-02 2 views
0

javascript関数を実行するにはどうすればいいですかこのrspecテストではaddRows()を実行しますか?この機能はテストでは実行されません。Rails 4、Seleniumはイベントでjavascriptを実行します

私のRSpecのテスト

context 'pressing alt+m, ' do 
    it 'appends hello to the dom', :js => true do 
    visit welcome_path 

    page.execute_script("return addRows(keypressdown = 17, keypressdown = 77);") 

    expect(page).to have_content("hello") 
    end 
end 

keypressListener.jsが

function addRows(event) { 
    event = event || window.event; 
    if(event.keyCode == 17 && event.keyCode == 77) { 
    document.body.append("hello"); 
    } 
} 

がレールServerを実行して手動でこのページにALT + Mを押すと、ファイルはAddRowsを()関数を実行しますが、テストはしていません関数を実行します。

答えて

1

Javascriptを実行する必要はありません。 Capybaraにはelement.send_keysメソッドがあります。したがって、このような何かがうまくいくかもしれない:

page.find('body').send_keys [:alt, 'm'] 

詳細についてはMethod: Capybara::Node::Element#send_keysを参照してください。

+0

「要素がページ上の単一の要素を表している」という私の提案では、variable = page.find 'body'を使用して、variable.send_keys [:alt、 'm']を呼び出してテストをパスしました。ありがとうございました!!!! – wsgb

+0

優秀!あなたの経験から私の答えに情報を加えました。 –

関連する問題