2016-04-12 18 views
1

AngularJS/ Rails環境のリッチテキスト入力ボックスにTextAngularを使用する。Capybara統合テスト 'TextAngular'入力

インテグレーションテストをCapybara/Selenium & Capybara-Webkitで実行しています。 テスト用のテキスト領域にテキストを入力する統合テストを作成しようとしました。しかし、私はこれを正常に行うことができませんでした。

私の妨げになったことは、テストが読み込まれるかページが読み込まれる度にテキスト入力ボックスIDが変更されることです。だから私はテキストの角度テストで使用される以下のクラスを使用しました。次のようにしてください:

find('textarea.ta-html.ta-editor') 

私はこれが動作していることを知っており、テキスト用に書かれたjavascriptテストでこれを使用していました。私が試してみて、テキスト値とテキスト領域を設定したときにtext angular github tests

はしかし、:

find('textarea.ta-html.ta-editor').set("Upgraded to SSD") 

私が取得:

Failure/Error: find('textarea.ta-html.ta-editor').set("Upgraded to SSD")
Selenium::WebDriver::Error::ElementNotVisibleError: Element is not currently visible and so may not be interacted with

私はCapybaraを使用してテキストエリアの値を設定できますか?

答えて

1

textarea.ta-html.ta-editorと一致する要素は、ページ上で非表示になり、ユーザーが対話する要素ではありません。設計上、Capybaraは通常、ユーザーが対話する要素と対話する必要があるため、対話しようとしている要素の前の兄弟であり、div[contenteditable]と一致する可視要素に#setを呼び出す必要があります。あなたは、あなたのHTMLを表示しませんが、願わくはあなたが唯一のページ上のフィールドのこのタイプの1を持っている場合は、あなたが

find('<container_selector> div[contenteditable]').set(...) 

または

find('<more_general_container_selector>', text: '<label text or something else in the container>').find('div[contenteditable]').set(....) 

をスコープを行うことができますすることができます含む要素を持っていますおそらく

find('.text-angular div[contenteditable]').set('Upgraded to SSD') 

注意して逃げることができます:セレンのドライバを使用している場合には、それだけでINSIを作成します子供たちと一緒にメインのcontentEditable要素と相互作用することができないという制限がありますそれ。他のカピバラのドライバーにも同じ問題があるかどうかはわかりません。

+0

トムブリリアントで清潔な溶液。 set( "SSDにアップグレード")を使用して、Capybara/Seleniumを使用してテキストを設定できました:find( 'div.ta-text.ta-editor div [contenteditable] – orion