0

最初の列の値 (xyz) に基づいて、「実行」 (4 番目の列) をクリックするための xpath を作成したいと考えています。以下の xpath は機能しません。xpath を記述するより良い方法を提案できますか。

//table/tbody/tr/td[text()='xyz fix']/parent::tr/td[4]
<div id="main">
   <table class="FixedLayout" width="1000px">
      <tbody>
         <tr></tr>
         <tr>
            <td class="RowHeight">
               <a href="/TestPass/View/373">xyz</a>
            </td>
            <td>xyz fix</td>
            <td>1125</td>
            <td>
               <a href="/Instance/Create?suiteId=373">Run</a>
            </td>
         </tr>
         <tr>
            <td class="RowHeight">
               <a href="/TestPass/View/372">abc</a>
            </td>
            <td>abc fix</td>
            <td>1125</td>
            <td>
               <a href="/Instance/Create?suiteId=372">Run</a>
            </td>
         </tr>
      </tbody>
   </table>
</div>
4

1 に答える 1

2

なぜあなたのものがうまくいかなかったのかわかりません。「動かない」の意味を教えてください。NoSuchElementException? ElementNotVisibleException? XPath が間違っていますか? リンクをクリックしていないか、それとも何ですか?

その間、次の XPath を試してください (ただし、問題は XPath ではなく Selenium コードにある可能性があります)。

ここでは、クリックしたいと言ったので、 の<a>代わりにリンクに行き<td>たいと思います。

XPath 述語を使用します。

//*[@id='main']//table/tobdy/tr[td[text()='xyz']]/td[4]/a

インデックスの使用を避けるために、属性セレクターで XPath 述語を使用します。

//*[@id='main']//table/tobdy/tr[td[text()='xyz']]//a[contains(@href, 'Instance/Create')]

..親を取得するために使用します

//*[@id='main']//table/tobdy/tr/td[text()='xyz']/../td[4]/a
于 2013-08-14T21:14:23.067 に答える