C# Selenium Webdriver Count Xpath Elements / null check

本文关键字:null check Elements Xpath Selenium Webdriver Count | 更新日期: 2023-09-27 18:32:31

如何将 xpath 的计数转换为 int?

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

我从问题中得到了这个问题:有谁知道为什么 GetXpathCount() 在 C# 中不起作用?

似乎无法让它工作,我尝试将上述内容转储到列表中并计算列表,但这也不起作用。

也有点题外话,但有没有办法检查司机。FindElement(By.XPath("exp")) == null?因为如果它剂量 = 空,它将抛出空引用错误。

C# Selenium Webdriver Count Xpath Elements / null check

您正在寻找.FindElements .

毕竟,看看你正在使用的方法名称:FindElement。(无复数)

因此,计数将始终为 1 ;)

查看.FindElements,这将具有.Count属性(因为它本质上是返回的List)。

至于空检查,这取决于你,但这是不需要的。Selenium的源代码显示它永远不会从那里返回为空。它要么将成为您请求的元素,要么在获取它时遇到问题,则会引发异常。

因此,null检查将是防御性的,但浪费。更重要的是,如果.FindElements无法获取您请求的元素(即与抛出异常相比),它将返回一个空集合

因此,实际上,只有当driver为空时,您才会得到NullReferenceException(这意味着您的整个测试都失败了)。

int numberOfElements = driver.FindElements(By.XPath("(//td[contains(@sorttable_customkey, '" + Account + "')])/preceding::a[1]")).Count;
如果多个

元素具有相同的定位器,则可以使用 FindElements。

它将返回 ReadOnlyCollection,使用它您可以获取count元素:

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