2017-01-27 5 views
0

テストを実行すると、物理的に検索入力フィールドをクリックしない限り、オートコンプリートドロップダウンメニューが表示されません。AJAXがCucumber/Capybara/Seleniumでオートコンプリートを実行する

これはSelenium Webdriverを使用したキュウリ試験で、結果はCrafty Clicks Address Autocomplete APIから得られます。

def fill_in_autocomplete(selector, value) 
    page.execute_script(" 
    window.onload = function() { 
     $('#{selector}').focus().val('#{value}').keydown(); 
    } 
    ") 
end 

fill_in_autocomplete "#address_lookup", with: "EC2A 1AF" 

は私も同じよう、より具体的なKeyDownイベントベースのソリューションを試してみた:

私はこのような何かを見てすべてがいくつかの他の記事/情報源から同じ溶液の多数のバージョンを試してみました

var e = jQuery.Event("keydown"); 
e.which = 50; 
$("input").trigger(e); 

私もテストを一時停止し、コンソールで手動で各ソリューションをテストしましたが、もう一度機能しません。

私はjQuery UIを使用していないので、.autocomplete()のソリューションは関係ありません。

私はまた、タイミングの周りの問題を考慮に入れて、プロセス全体を通してsleepを使用しました。

私はアイデアがありません!

答えて

0

これはいくつかの最新バージョンのFirefoxの問題です。最初はFFをダウングレードするように勧められましたが、代わりにクロムドライブに切り替えることにしました(私はchromedriver-helper gemを使用しました)、すべてが完全に機能しました。

面白いことに、これを理解するのがずっと時間がかかる理由の1つは、Chromeのコンソールで入力フィールドのフォーカスをトリガしていたためです。これは、必要なコードを特定する方法です私のテストで使用します。この問題は、Chromeでコンソールを開いているときに、コンソールからフォーカスを外すことができないことが明らかです。ですから、コンソールからの入力フィールドに焦点を当てるために使用しようとした方法は、コンソール自体に焦点が当てられているという事実によって無効になりました。最後に、フォーカス・コードをクリック・イベントに入れ、それをページ上の要素にアタッチします。次に、コンソールを閉じ、要素をクリックし、オートコンプリート入力フィールドにフォーカスを移動しました。

関連する問題