Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Selenium Webdriver计数Xpath元素/空检查_C#_Xpath_Selenium_Webdriver - Fatal编程技术网

C#Selenium Webdriver计数Xpath元素/空检查

C#Selenium Webdriver计数Xpath元素/空检查,c#,xpath,selenium,webdriver,C#,Xpath,Selenium,Webdriver,如何将xpath的计数转换为int int example = driver.FindElement(By.XPath("(//td[contains(@sorttable_customkey, '" + Account + "')])/preceding::a[1]")).Count; 我从问题中得到了这个答案: 我似乎无法让它发挥作用,我尝试将上面的内容转储到一个列表中并计算列表,但这也不起作用 也有点离题,但有没有办法检查driver.FindElement(By.XPath(“exp”

如何将xpath的计数转换为int

int example = driver.FindElement(By.XPath("(//td[contains(@sorttable_customkey, '" + Account + "')])/preceding::a[1]")).Count;
我从问题中得到了这个答案:

我似乎无法让它发挥作用,我尝试将上面的内容转储到一个列表中并计算列表,但这也不起作用

也有点离题,但有没有办法检查driver.FindElement(By.XPath(“exp”))==null?因为如果它dose=null,它将抛出一个null引用错误

如果对多个元素具有相同的定位器,则可以使用

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

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

您正在查找
.FindElements

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

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

签出
.FindElements
,这将有一个
.Count
属性(因为它本质上是一个返回的
列表

至于空检查,这取决于您,但这是不必要的。Selenium的源代码显示它永远不会返回null。它要么是您请求的元素,要么在获取时遇到问题时抛出异常

因此,
null
检查是防御性的,但却是浪费。更重要的是,如果
.FindElements
在获取您请求的元素时遇到问题(即与引发异常相比),它只会返回一个空集合

因此,现实地说,如果
驱动程序
为null(这意味着整个测试失败),您只会得到
NullReferenceException


我想我昨晚试过了,但它抛出了一个错误,尽管我连续写了12个小时的代码,所以我可能会做一些其他的错误。无论如何,谢谢和谢谢Santossarma都是正确的。“因此,计数总是1”更糟糕的是,没有
FindElement().count
属性,因为
FindElement()
返回的不是集合:-)“我似乎无法让它工作”是一个非常糟糕的问题描述。如果你需要帮助,你必须描述问题。
int numberOfElements = driver.FindElements(By.XPath("(//td[contains(@sorttable_customkey, '" + Account + "')])/preceding::a[1]")).Count;