2

私の現在の環境は、Selenium RC(Seliniumサーバー2を使用)を使用するFirefox3.6.28です。最終的には、WebDriverのものを使用してSelenium 2.0に移行されますが、現時点でSeleniumRCで動作させるために必要なテストがいくつかあります。

各行の中に「ahref」リンクがある動的に生成されたテーブルがあります。ある行のリンクをクリックしたい。ただし、問題は、Seleniumが正しく選択すること(テストに合格)、および要素が存在しない(テストが失敗する)というエラーが発生することです。

[testng] com.thoughtworks.selenium.SeleniumException: ERROR: Element xpath=(//table[@class='results'])/tbody/tr[position()=5]/td/a not found

要素を検出/失敗するパターンはないようです。

エラーが発生したときにブラウザが実際に要素を認識しているかどうかを確認するには、次のようなものがあります。



    ...
    try{
        wrapWaitForPageToLoad("10000");
        wrapWaitForPageToLoad("10000");
        clickAndWait(xpath);
    }catch(Exception e) { //loop indefinitely here }

そして、ブラウザが要素を認識していることがわかります。SeleniumIDEでxpathをテストします。Selenium IDEでそのxpathを使用してクリックコマンドを実行できるため、xpathは明らかに正しいです。

一部の要素が完全に読み込まれなかった場合に備えて、値10000のwrapWaitForPageToLoad()を追加しました。ただし、これは問題に影響を与えていないようです。そして、いずれにせよ、上記のテストが示唆するように、要素はすべて完全にロードされているようです...また、時間を増やしても役に立ちません。

firebugがテーブル上で私に与える部分的なhtml
:(最初の行がテーブルのタイトルであるため、listdata4を取得するにはposition()= 5であることに注意してください)

<table class="results" cellspacing="0" cellpadding="1" border="0" style="cursor: default;">
<tbody>
<tr id="titles">
<tr class="listdata1" style="">
<tr class="listdata2" style="">
<tr class="listdata3" style="">
<tr class="listdata4" style="">
    <td align="center">...</td>
    <td>
        <a href="/click/this/link">Cake Pictures</a>
    </td>

この奇妙なエラーの原因は何でしょうか?

4

1 に答える 1

1

xpathをから変更する必要があります

//table[@class='results'])/tbody/tr[position()=5]/td/a

//table[@class='results']/tbody/tr[5]/td[2]/a
于 2012-08-30T19:30:46.337 に答える