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?因为如果它剂量 = 空,它将抛出空引用错误。
您正在寻找.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();