7

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

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

どういうわけか、Selenium はディレクティブによって生成された html 要素を認識できないようです。

この問題をどのように克服できるかについての提案はありますか? もちろん、この変更導入ディレクティブを元に戻すことを除いて:)

4

3 に答える 3

2

わかりました、Selenium で Geb を誤用したのは私だったようです。私はデフォルトのドライバーを指定しなかったので、Geb は AngularJS で動作しないドライバーを選択しました。ドライバーを手動で Chrome に変更した後、すべてが機能し始めました。

于 2013-04-30T11:18:54.873 に答える
1

ページ ソースには、Angular によってコンパイルされる前のテンプレートが表示されます。Chrome の開発者コンソールを使用して、コンパイルされたテンプレートを表示できるはずです。要素を右クリックし、[要素の検査] を選択して開いてみてください。

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

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

を使用して見つける必要があります

driver.findElement(By.id("username"));
于 2013-04-29T21:07:44.393 に答える