21

既存のコード ベースに対して Selenium リグレッション テストを実行しており、Web アプリの特定の画面では中間ステップにポップアップを使用しています。

現在、テストでは次のコマンドを使用しています。

// force new window to open at this point - so we can select it later
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')");
selenium().click("//input[@value='Submit']");
selenium().waitForPopUp("enquiryPopup", getWaitTime());
selenium().selectWindow("enquiryPopup");

...ほとんどの場合に機能します。waitForPopUp()時折、テストは次の行で失敗します。

com.thoughtworks.selenium.SeleniumException: Permission denied

より良い、より信頼性の高い方法を提案できる人はいますか?

また、これらのテストは主に IE6 と 7 で実行します。

4

5 に答える 5

4

できます!!セレネーゼを好む人々にとって簡単にするためです。

これは、IE7(通常モード)を使用して機能しました。

なんて面倒くさい。SO の空のスパゲッティ モンスターに感謝しないと、IE でこれを機能させることはできませんでした。

<tr>
    <td>getEval</td>
    <td>selenium.browserbot.getCurrentWindow().open('', 'windowName');</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>buttonName</td>
    <td></td>
</tr>
<tr>
    <td>windowFocus</td>
    <td>windowName</td>
    <td></td>
</tr>
<tr>
    <td>waitForPopUp</td>
    <td>windowName</td>
    <td>3000</td>
</tr>
<tr>
    <td>selectWindow</td>
    <td>windowName</td>
    <td></td>
</tr>
于 2009-01-09T18:40:46.113 に答える
1

*iehta モードで実行している場合、あちこちで不具合が発生します。仕事で Selenium を使用していますが、IE と AJAX には多くの問題があるようです。

ただし、実行中の問題は、Selenium が完全に読み込まれる前に別のウィンドウでコンポーネントにアクセスしようとする問題のようです。デフォルトのタイムアウト範囲がどのように設定されているかわかりませんが、問題を回避するために 60 (60000ms) 秒程度に増やしてみてください。

それ以外では、Firefox で (*chrome を使用して) テストを実行することをお勧めします。より信頼性の高い結果が得られるためです。ただし、ビジネス要件のために実行できない場合もあります。

于 2008-09-19T03:00:05.273 に答える
0

ポップアップウィンドウ内でiframeを選択し、フォームに入力する必要がありました。セレンがiframeを見つけることができなかったselectWindowコマンドの使用に問題があったため、コマンドを削除しました。

このセレネーゼは私にとってうまく機能しました(iframeのタイトルとid = account_frame):

<tr>
  <td>click</td>
  <td>//a[@class='item_add']</td>
  <td></td>
</tr>
<tr>
  <td>windowFocus</td>
  <td>account_frame</td>
  <td></td>
</tr>
<tr>
  <td>waitForPopUp</td>
  <td>account_frame</td>
  <td>10000</td>
</tr>
于 2009-12-21T18:58:50.960 に答える
0

別のセレン関数を追加してみましたwindowFocus():

// force new window to open at this point - so we can select it later
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')");
selenium().click("//input[@value='Submit']");
selenium().windowFocus("enquiryPopup");
selenium().waitForPopUp("enquiryPopup", getWaitTime());
selenium().selectWindow("enquiryPopup");

ローカルで実行するとテストは成功しましたが、作成/フォーカス/待機/選択のすべてのメソッド呼び出しでのみ成功しました。

ビルド サーバーにすべてのテストを実行させようとしています。それも成功したら、そこからライブラリ関数を作成します...!

于 2008-09-19T03:43:42.860 に答える
-1

問題を引き起こしている呼び出しの周りにいくつかの待機ステートメントを追加してみてください。

以前にも同じエラーが発生しましたが、確実に解決できる唯一の方法は、System.Threading.Thread.Sleep(5000)を呼び出すことでした。

于 2008-09-19T14:18:36.287 に答える