質問

私はセレンに初めてです。私はC#と仕事をしています。このようなテーブルがあります。 Firebugを使用して見ました。

<table>
  <tbody>
    <tr class="v-table-row-odd"></tr>
    <tr class="v-table-row"></tr>
    <tr class="v-table-row-odd"></tr>
    <tr class="v-table-row"></tr>
    <tr class="v-table-row-odd"></tr>
    <tr class="v-table-row"></tr>
  </tbody>
</table>

そして、ここでの問題は、動的に変化するテーブル内の行の数を取得する方法を知らないことです。方法はありますか?

XpathCountを試しましたが、いくつかの例外の問題がありました。

decimal numOfRows = selenium.GetXpathCount("xpath=/html/body/div/div/div[2]/div/div[3]/div/div[2]/div/div/div[2]/div/div/div/div/div[7]/div/div/div[2]/div/table/tbody/tr");

また、このようなXpathCountを試しました

selenium.GetXpathCount("xpath=/html/body/div/div/div[2]/div/div[3]/div/div[2]/div/div/div[2]/div/div/div/div/div[7]/div/div/div[2]/div/table/tbody");

しかし、両方とも例外を提起しました。この点で誰かが私を助けてくれますか。

ありがとうございました

役に立ちましたか?

解決

これらのクラス名でマークされた行がある唯一のテーブルである場合、次のことを使用できます。

decimal numOfOddRows = selenium.GetXpathCount("//tr[@class='v-table-row-odd']"); // 3
decimal numOfEvenRows = selenium.GetXpathCount("//tr[@class='v-table-row']");    // 3
decimal numOfRows = numOfOddRows + numOfEvenRows;                        // 3 + 3 = 6

そうでない場合は、 table. 。ドキュメントの最上部から始まる(非常に長い)Xpathセレクターでは、何かが正しくありません。これには本質的に間違ったものはありませんが、動的なWebページを使用すると、正しくなるのは非常に困難です。

代わりに、あなたはあなたの近くにある要素を見つける必要があります table そして、その中でフィルタリングします。たとえば、あなたのいずれかの場合 divsがあります name 属性、使用できます //div[@name='someName']//tr. 。 XPathセレクターの使用の詳細については、参照してください ここ.

他のヒント

これを試して、テーブル内の行数を取得します

int iRowsCount = driver.FindElements(By.XPath("/html/body/..../table/tbody/tr")).Count;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top