2013-04-29 16 views
5

私のアプリケーションをチェックするためにSeleniumテストを書く際に問題があります。私がテストしたいのは、ユーザーが正しいログイン/パスワードを入力したときに正しいページが表示され、ユーザーがログインしたときです。SeleniumにAngularJSのページ要素が表示されない

主な問題は、私のログインフォームがAngularJSディレクティブとして生成されていることですこのディレクティブは両方の場所で再利用されます)、Seleniumはこのディレクティブ生成マークアップの要素を見ることができないようです。 最も重要なことは、通常のマークアップをdirectiveによって生成する前にテストがこのページを通過したことです。

これはどういうわけか、Seleniumはディレクティブによって生成されたhtml要素を見ることができません。

どのように私はこの問題を克服することができますか?この変更導入ディレクティブを元に戻すことを除いて:)

+0

を私は正確に同じ問題を抱えています:ここでのアドバイスが助け場合

を参照してください。私はテストしようとしている角度のあるウェブサイトを持っていますが、junitテストを実行するとその要素は見つかりません。私は様々な要素ロケータを試しました。何も働かなかった。 – Automationtested

答えて

1

[OK]を使用した、それは私はセレンとゲブを悪用したように見えますされなければなりません。私はデフォルトドライバを指定せず、GebはAngularJSで動作しないドライバを選択しました。私は手動でドライバをChromeに変更した後、すべてが動作するようになりました。

1

ページソースは、角度でコンパイルする前にテンプレートを表示します。 Chromeのデベロッパーコンソールを使用して、コンパイルされたテンプレートを表示することができます。要素を右クリックして '要素の検査'を選択して開きます。

driver.getPageSource()は同じ理由で失敗します(コンパイルされていないテンプレートが取得されます)が、driver.findElement()は正常に動作するはずです。

<input id="username" type="text" ng-model="foo"/> 

は、

driver.findElement(By.id("username")); 
+0

残念ながら、そうではありません。私はより明確になるように編集しました。問題は、このディレクティブ生成マークアップを追加する前に、私のテストがこのページを通過していたことです。 –

関連する問題