Как получить старое значение элемента таблицы, как я могу получить новое значение? - PullRequest
2 голосов
/ 12 июня 2019

Я пытаюсь почистить некоторые данные с сайта whoscored.com. (https://www.whoscored.com/Regions/81/Tournaments/6/Seasons/7406/Stages/16428/PlayerStatistics/Germany-Bundesliga-II-2018-2019)

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

celtext по-прежнему дает мне значение исходной таблицы, которая была до нажатия на вкладку минут и подробностей. (второй блок кода)

Как мне убедиться, что я получаю обновленную информацию при получении celtext?

Требуется вывод:

  1. первый клик подробно
  2. клик мин.
  3. первым человеком должен быть Даниэль Эурер Фернандес

вывод в реальности:

  1. первый клик подробно (успешно)
  2. Нажмите минут (игроки сортируются по минутам)
  3. get celtext (показана вся информация о Филиппе Клементе .... :()

Очень ценю вашу помощь!

проверенные решения

Я пытался перевести Thread в спящий режим на 8 секунд после каждого щелчка по таблице, но это не повлияло на результат. Я знаю, что это, вероятно, связано с тем, что элементы загружаются не полностью или щелчок не приводит к «жесткому щелчку», который влияет на данные. Однако страница меняется на таблицу, в которой я хочу ее видеть.

код

    WebElement detail = driver.findElement(By.xpath("//*[@id=\"detailed-statistics-tab\"]/a")); // selects detailed tab in stats
    ex.executeScript("arguments[0].click();", detail);

int ok_size1=driver.findElements(By.xpath("//*[@id=\"player-table-statistics-head\"]/tr/th[5]")).size(); // sorts by mins
    driver.findElements(By.xpath("//*[@id=\"player-table-statistics-head\"]/tr/th[5]")).get(ok_size1-1).click();


WebElement theTable = driver.findElement(By.xpath("//*[@id=\"player-table-statistics-body\"]"));

    List < WebElement > rows_table = theTable.findElements(By.tagName("tr"));
    rows_count = rows_table.size();
    for (int row = 0; row < rows_count; row++) {
        List < WebElement > Columns_row = rows_table.get(row).findElements(By.tagName("td"));
        int columns_count = Columns_row.size();
        for (int column = 0; column < columns_count; column++) {
            String celtext =  Columns_row.get(column).getAttribute("innerHTML");

Ожидайте выход Даниэля Хера Фернандеса, но получите Филиппа Климента

1 Ответ

0 голосов
/ 12 июня 2019

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

List<WebElement> players = driver.findElements(By.xpath("//*[@id='statistics-table-detailed']//tr//a[@class='player-link']"));
for(WebElement player:players)
{
System.out.println(player.getText());
}
...