Подсчет количества элементов, соответствующих данному выражению xpath

Как подсчитать количество элементов, соответствующих для данного выражения xpath

xpath: driver.findElement(By.xpath("//div[contains(@id,'richedittext_instance')]"))

все что мне нужно это граф.

3 ответов


попробуйте этот код:

//Assume driver is intialized properly.
int iCount = 0;
iCount = driver.findElements(By.xpath("Xpath Value")).size());

на iCount имеет количество элементов, имеющих одинаковое xpath значение.


другой вариант Если вы основываете свои требования строго при необходимости использования Selenium вы можете сделать что-то подобное с помощью WebElements и получить размер возвращаемого списка:

List<WebElement> myListToCheck=currentDriver.findElements(By.xpath("somePath"));
if(myListToCheck.size()>0){
//do this
}else{
//do something else
}

или просто вернуть размер списка; если вы действительно хотите получить от него...

int mySize=myListToCheck.size()

Я считаю, что как только у вас есть установленный список веб-элементов, вы также можете использовать итераторы для просмотра этого списка. Полезно, Я не знаю... просто предоставляю другой способ добраться до того же конца игры.


не работает в Selenium, что позволяет возвращать узлы только из XPath, а не примитивы, такие как число, возвращаемое count(...). Хранится для справки и действует для большинства других инструментов, предлагающих более полный API XPath.

вы должны возвращать только минимально возможный объем данных из запроса. count(//div[contains(@id,'richedittext_instance')]) подсчитывает количество результатов внутри XPath и, таким образом, быстрее, поскольку все элементы не должны передаваться из движка XPath в Селен.

Я не могу помочь вам с тем, как получить это как n int из селена, но это должно быть легко.