セレンC#を使用してテーブル内の行数
-
25-10-2019 - |
質問
私はセレンに初めてです。私は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
そして、その中でフィルタリングします。たとえば、あなたのいずれかの場合 div
sがあります name
属性、使用できます //div[@name='someName']//tr
. 。 XPathセレクターの使用の詳細については、参照してください ここ.
他のヒント
これを試して、テーブル内の行数を取得します
int iRowsCount = driver.FindElements(By.XPath("/html/body/..../table/tbody/tr")).Count;
所属していません StackOverflow