4

Я посмотрел документацию, расположенную here, но не смог найти ответ.Как получить количество найденных элементов с помощью Selenium WebDriver с Python?

Я хочу получить элемент class name или xpath и вернуть количество экземпляров. Кажется, в Python нет функции, например get_xpath_count().

Любые идеи о том, как достичь этого?

ответ

7

Попробуйте driver.find_elements_by_xpath и подсчитайте количество возвращаемых элементов.

+0

doh! хороший улов! Я смотрел на уникальную find_element_by_xpath(), которая была указана в разделе «Локальные элементы», и она вернула только один объект WebElement. Множественная функция, о которой вы заявили, фактически находилась в разделе 6 «API». Не уверен, почему они не включили это в раздел 4. Благодаря! – samxli

+0

Да, было бы разумно хотя бы кратко остановиться в разделе 4, странно, но, по крайней мере, есть некоторые документы! – Sam

+1

Я собираюсь отредактировать документ на github и, надеюсь, его потянет. – samxli

1

В Java, следующий может работать:

int xpathCount= driver.findElements(By.xpath("//div[@id='billingProfiles']/div[@class='cardContainer']")).size(); 

ИЛИ,

List<WebElement> xpath = driver.findElements(By.xpath("//div[@id='billingProfiles']/div[@class='cardContainer']")); 
int xpathCount = xpath.size(); 
System.out.println("Total xpath: " + xpathCount); 

Для подсчета общих ссылок на странице:
Way1:

List<WebElement> totalLinks = driver.findElements(By.tagName("a")); 
int totalLinkSize = totalLinks.size(); 
System.out.println("Total Links by Way1 : " + totalLinkSize); 

Путь 2:

int totalLinkSize2 = driver.findElements(By.xpath("//a")).size(); 
System.out.println("Total Links by Way2 : " + totalLinkSize2); 
+0

это лучший способ в java? – rrw

+0

Вышеприведенное является одним из способов. Вы можете сделать это и по-другому. Вы можете использовать List

+0

в порядке, это то, что я делаю прямо сейчас, но есть ли другой способ, как метод, возвращающий объект int? – rrw

0
public static IWebDriver driver = null; 

public static IList<IWebElement> elements; 

// List count return total number of element 

elements = driver.FindElements(By.XPath("//a")); 

int intLinkCount = elements.Count; 
0

Вы можете использовать команду 'assertXpathCount' доступна в Селен

3

вы можете просто использовать len() функцию:

len(driver.find_elements_by_xpath('//a')) 
0

В питона

element.find_elements() 

вернет всех поверхностных детей Веб-элементы

Смежные вопросы