1

Selenium IDE を使用して記録されたテストを実行しようとしています。次の html は IDE によって生成されます

<tr>
    <td>clickAndWait</td>
    <td>css=span.blt-txt</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:svMenu:np1:6:cni1::disclosureAnchor</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:r5:0:mr1:gts1:gts_pc1:itFilterFieldValue::content</td>
<td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:r5:0:mr1:gts1:gts_pc1:cil1::icon</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:r5:0:mr1:gts1:gts_pc1:tt1:0::di</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:r5:0:mr1:gts1:gts_pc1:tt1:1:astTreeSNo</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id=pt1:r1:0:rAstDtl:0:cb4</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>id('pt1:ptGeneric:ot1::_afrTtxt')/x:div/x:h1</td>
    <td></td>
</tr>

テスト/実行コマンドを実行すると、次のエラーが表示されます [error] Element id=pt1:r5:0:mr1:gts1:gts_pc1:tt1:0::di not found

これを修正する方法はありますか?

4

2 に答える 2

0

テストケースで生成された ID を使用することは、通常はお勧めできません。サーバーの再起動/データの変更時に、これらの ID も変更される傾向があります。

とにかく、あなたの問題はタイミングに関する古典的な問題のようです。何かがクリックされたとき/ページが変更された後、要素は AJAX で読み込まれますか? はいの場合、Selenium は完全に読み込まれる前にクリックしようとします。waitForElementPresentトラブルの原因となる要素をクリックする前に使用する必要があります。

一般に、AJAX を多用するページに Selenium IDE を使用すると、非常に簡単に難しくなります。手動の Selenium RC 書き込みに切り替えるか、Selenium WebDriver に切り替えることを検討してください。両方の長所を活用できます。最初に IDE でテストをクリックし、次に任意の言語でコードを WebDriver にエクスポートし、必要な変更を加え、待機を追加します (多くの場合、暗黙的で十分です)。これで完了です。

于 2013-07-22T10:36:21.523 に答える