Извлечение данных из веб-таблицы - PullRequest
0 голосов
/ 02 марта 2020

Существует веб-таблица, которая распространяется на 3 страницы, и вы переходите на следующую страницу, используя ссылку.

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

Пожалуйста, посоветуйте, как изменить этот скрипт, чтобы он захватывал данные со страниц 2 и 3. динамически.

Мой код

    driver.get("https://www.seleniumeasy.com/test/table-pagination-demo.html");

    //Identify the table

    WebElement mytable = driver.findElement(By.xpath("//div[@class='table-responsive']/table/tbody"));

    //Get the number of rows from the table

    List<WebElement> table_rows = mytable.findElements(By.tagName("tr"));

    int row_count = table_rows.size();

    System.out.println("Number of rows present are "+row_count);

    //get the number of columns from the table

    List<WebElement> table_cols = driver.findElements(By.xpath("//*[@id='myTable']/tr[1]/td"));

    int col_count = table_cols.size();

    System.out.println("Number of cols present are "+col_count);

    //Print the table data

    String firstpart = "//*[@id='myTable']/tr[";
    String secondpart = "]/td[";
    String thirdpart = "]";

    for(int row=1;row<=row_count;row++)
    {
        for(int col=1;col<=col_count;col++)
        {
            String finalXpath = firstpart+row+secondpart+col+thirdpart;
            WebElement table_data = driver.findElement(By.xpath(finalXpath));
            String table_values = table_data.getText();
            System.out.print(table_values+" | ");
        }System.out.println();
    }

Результат

Количество присутствующих строк: 13

Количество присутствующих столбцов: 7

1 | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка |

2 | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка |

3 | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка |

4 | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка |

5 | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка | Настольная ячейка |

| | | | | | |

| | | | | | |

| | | | | | |

| | | | | | |

| | | | | | |

| | | | | | |

| | | | | | |

| | | | | | |

1 Ответ

1 голос
/ 02 марта 2020

Это потому, что 6-я строка и так далее имеют свойство display: none;, вам нужно нажать кнопку «Далее», чтобы получить текст, добавить проверку, чтобы убедиться, что строка содержит свойство или нет:

for(int row=1;row<=row_count;row++){
    //here, the validation
    String row_style = table_rows.get(row-1).getAttribute("style");
    if(row_style.contains("none")) {
        driver.findElement(By.cssSelector(".next_link")).click();
    }

    for(int col=1;col<=col_count;col++){
        String finalXpath = firstpart+row+secondpart+col+thirdpart;
        WebElement table_data = driver.findElement(By.xpath(finalXpath));
        String table_values = table_data.getText();
        System.out.print(table_values+" | ");
    }
    System.out.println();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...