0

xpath のカウントを int に変換するにはどうすればよいですか?

int example = driver.FindElement(By.XPath("(//td[contains(@sorttable_customkey, '" + Account + "')])/preceding::a[1]")).Count;

私は質問からこれを拾いました: GetXpathCount() が C# で機能しない理由を知っている人はいますか?

上記をリストにダンプしてリストを数えようとしましたが、これも機能しません。

また、オフトピックですが、driver.FindElement(By.XPath("exp")) == null かどうかを確認する方法はありますか? dose = null の場合、null 参照エラーがスローされるためです。

4

2 に答える 2

1

複数の要素に同じロケーターがある場合は、FindElementsを使用できます。

count要素を取得できることを使用して、ReadOnlyCollection を返します。

int example = driver.FindElements(By.XPath("(//td[contains(@sorttable_customkey, '" + Account + "')])/preceding::a[1]")).Count();
于 2013-09-23T17:50:04.380 に答える
1

を探してい.FindElementsます。

結局のところ、使用しているもののメソッド名を見てください: FindElement。(複数形不可)

したがって、カウントは常に 1 になります ;)

を確認してください.FindElements。これには.Countプロパティがあります (返されるのは基本的に であるためList)。

null チェックに関しては、それはあなた次第ですが、不要です。Selenium のソース コードは、そこから null が返されることは決してないことを示しています。要求した要素になるか、取得に問題がある場合は例外がスローされます。

したがって、null小切手は防御的ですが、無駄です。要求している要素を取得するのに問題がある場合(つまり、例外をスローする場合と比較して)、空のコレクション.FindElementsが返されるだけなので、なおさらです。

したがって、現実的に言えば、null のNullReferenceException場合のみを取得しdriverます (これは、テスト全体が失敗することを意味します)。

int numberOfElements = driver.FindElements(By.XPath("(//td[contains(@sorttable_customkey, '" + Account + "')])/preceding::a[1]")).Count;
于 2013-09-23T17:56:50.427 に答える