Selenium webdriver 如何在以下场景中使用selenium webdriver获取WebElement的计数:

Selenium webdriver 如何在以下场景中使用selenium webdriver获取WebElement的计数:,selenium-webdriver,xpath,Selenium Webdriver,Xpath,我正在处理一些非常奇怪的html自定义代码,并试图获得动态列表中存在的元素的计数。此列表不是表格格式,并且经常更新。下面是我需要获取计数的元素的xpath: leaf-data-object-list[@id='objectList']/iron-list[@id='dataObjectList']/div[@id='items']/leaf-data-object-list-row[1] leaf-data-object-list[@id='objectList']/iron-list[@id

我正在处理一些非常奇怪的html自定义代码,并试图获得动态列表中存在的元素的计数。此列表不是表格格式,并且经常更新。下面是我需要获取计数的元素的xpath:

leaf-data-object-list[@id='objectList']/iron-list[@id='dataObjectList']/div[@id='items']/leaf-data-object-list-row[1]
leaf-data-object-list[@id='objectList']/iron-list[@id='dataObjectList']/div[@id='items']/leaf-data-object-list-row[2]

类似地,列表[3]、[4]等中还有更多的项目。有人能给我指出正确的方向吗?

在Selenium中,您有返回列表的FindElements()方法。 在你的情况下会像

List<WebElement> link_boxes=driver.findElements(By.xpath("leaf-data-object-list[@id='objectList']/iron-list[@id='dataObjectList']/div[@id='items']"));
List link\u boxes=driver.findElements(By.xpath(“叶数据对象列表[@id='objectList']]/iron列表[@id='dataObjectList']]/div[@id='items']);

根据您的代码测试,该集合的行为与其他集合类似,以获得动态列表中存在的元素计数。您可以使用以下预期条件诱导WebDriverWait:

List<WebElement> myDynamicList = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//leaf-data-object-list[@id='objectList']/iron-list[@id='dataObjectList']/div[@id='items']/leaf-data-object-list-row")));
System.out.println("Number of elements are : " + myDynamicList.size()); 
List myDynamicList=new WebDriverWait(driver,20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath(“//leaf数据对象列表[@id='objectList']]/iron列表[@id='dataObjectList']]/div[@id='items']/leaf数据对象列表行”);
System.out.println(“元素数为:“+myDynamicList.size());

感谢您的帮助和时间!我运行了代码,但是它没有返回准确的计数,即使列表完全填充在页面上。@Velly正如您所提到的
列表完全填充在页面上
,这就是您没有看到准确计数的原因。您可以看到“感谢您提供的信息”中的元素计数。这是有道理的。Selenium是否可以处理此类问题并获得整个计数?@vely of Rough您可以向下滚动并收集与定位器策略匹配的所有节点,并继续添加到列表中。你可以根据你的新要求申请一张新票。Stackoverflow志愿者会很乐意帮助你。