C#Selenium Webdriver计数Xpath元素/空检查
如何将xpath的计数转换为intC#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”
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;