0

アプリケーションの UI テストを少しいじる必要があり、たまたま問題に遭遇しました。

ログイン画面にはユーザー ID とパスワードのフィールドがあり、両方のフィールドにコンテンツがある場合は、javascript を介してログイン ボタンが有効になります。

スイートを記録すると、ボタンが有効になり、セレンがアクションを記録します。

しかし、完全なスイートを実行すると、ログイン ボタンが有効にならず、30000 ミリ秒待機した後にテストが失敗します。

このボタンを手動で有効にするか、有効にするテスト ケースを作成する必要がありますか? このシナリオの理想的なソリューションは何ですか。

よろしく、

サティヤ

4

2 に答える 2

0

何ヶ月も前に、私はWatiNで同様の動作に遭遇しました。そこでは、すべてのJavascriptイベントが必ずしもテストメソッドを介して呼び出されるとは限りません。それを回避するために私が考えた2つの方法がありました。1つは、MyTextField.FireEvent( "onchange")のようなJavascriptイベントを明示的に呼び出すことでした。もう1つの方法は、MyPage.Eval( "myjavascriptEnableFunction")のように、"enableing"javascript"メソッドを直接呼び出すことでした。

どちらのソリューションもユーザーの行動を模倣していないため理想的ではありませんが、私が見つけた中で最高のソリューションでした。

于 2012-02-28T18:20:30.063 に答える
0

詳細な情報がなければ、問題の正確な解決策を特定することは困難です。ただし、Selenium は必要なものをサポートしていると思います。私は過去にこの正確な問題を経験しました。

まず、テキスト ボックスにテキストが入力されると、かなりの数のイベントが発生します。フォーカス、変更、KeyDown、KeyPress、KeyUp。Selenium の「Type」コマンドはこれらのイベントを発生させず、テキストをフィールドに入れるだけです。

ユーザーのアクションを適切にシミュレートするには、対象のテキスト ボックスにとって重要なイベントを特定し、そのイベントを発生させる行を少なくとも 1 行追加する必要があります。Selenium IDE を使用している場合は、Type ステップの後に KeyPress イベントを発生させるだけで十分な場合があります (FireEvent "keyPress" または KeyPress)。私はテストに RC を使用しているので、入力された各文字のキーストロークをシミュレートするメソッドを作成しました。イベントを発生させるカスタム Type コマンドを作成することで、同じことができます。

例:

<table>
<tr>
<td>Type</td><td>boxLocator</td><td>Text Input</td></tr>
<tr>
<td>KeyPress</td><td>boxLocator</td><td>t</td></tr></table>

それはあなたが望むことをしてボタンを有効にするべきだと思います。

最後に、ユーザーのアクション以外で何かをしなければならないというコメントは、まったく正しくありません。ユーザーが行動すると、ブラウザによってさまざまなアクションが発生します。どちらかといえば、Selenium はこれらすべてのアクションを実行しないことを選択するため、私たちはたるみを取り残されています。

于 2012-02-28T20:16:59.550 に答える