2015-10-30 2 views
3

На моей странице html есть таблица с 10 строками; эти строки будут отображаться на основе фильтра (динамически). Скажем, например, без фильтров по умолчанию будет возвращена 10 строк. после применения фильтра в зависимости от типа фильтра будет возвращено менее 10 строк, поэтому я хочу получить динамическое количество строк таблицы (после фильтра) с использованием веб-драйвера селена.Selenium - Как подсчитать количество строк в таблице динамически?

Я пробовал с driver.findElements(By.xpath("abcd")).size(), но это дает значение по умолчанию 10; однако после применения фильтра появляются только 2 строки.

Просьба предложить, как получить динамический счет (count = 2 как отображающийся 2 строки в пользовательском интерфейсе).

+0

Вы используете Java API? – Matt

+0

Selenium Webdriver-Java Я использовал драйвер.findElements (By.xpath ("abcd")). Size() – unknown

+0

Проблема решена ... тот же код работает, я просто увеличил время ожидания после применения фильтра – unknown

ответ

0

Я префишу это тем, что я не Java-разработчик, но я использую много webdriver на других языках.

Лучший способ установки тестов - дождаться результата действия, которое вы проверили. Иногда вы можете уйти, не делая ожиданий или ожидающих ожидания, но затем вы идете и запускаете свои тесты на более медленной сетке, и все падает в кучу.

Такие вещи, как «div существует», «div имеет класс», какими бы ни были ваши результаты. В вашем случае это звучит так, как будто вы не сможете проверить, какой div будет отображаться, но вы, вероятно, можете использовать свой тест размера в качестве ожидаемого результата.

Селен может использовать любой ExpectedCondition или вы можете задать функцию

WebDriverWait wait = new WebDriverWait(getDriver(), 5); 
wait.until(new ExpectedCondition<Boolean>() { 
    public Boolean apply(WebDriver driver) { 
     int elementCount = driver.findElement(By.xpath("xxxx")).size(); 
     if (elementCount == 2) 
      return true; 
     else 
      return false; 
    } 
}); 

код из https://sqa.stackexchange.com/a/8701

2

Чтобы найти общее число элементов на динамической странице, мы должны использовать driver.findElements(). Размер(). Но иногда это совсем не полезно.

Сначала получите размер всех элементов, соответствующих количеству строк. После этого вы можете использовать динамический xpath, т. Е. Заменить время выполнения строки и столбца, чтобы получить данные.

{ 
    List<WebElement> rows_table = mytable.findElements(By.tagName("tr")); 
    //To calculate no of rows In table. 
    int rows_count = rows_table.size(); 

    //Loop will execute till the last row of table. 
    for (int row=0; row<rows_count; row++){ 
    //To locate columns(cells) of that specific row. 
    List<WebElement> Columns_row = rows_table.get(row).findElements(By.tagName("td")); 
    //To calculate no of columns(cells) In that specific row. 
    int columns_count = Columns_row.size(); 
    System.out.println("Number of cells In Row "+row+" are "+columns_count); 

    //Loop will execute till the last cell of that specific row. 
    for (int column=0; column<columns_count; column++){ 
    //To retrieve text from that specific cell. 
     String celtext = Columns_row.get(column).getText(); 
     System.out.println("Cell Value Of row number "+row+" and column number "+column+" Is "+celtext); 
    } 
    System.out.println("--------------------------------------------------"); 
}