Получение всех значений данных из веб-таблицы - PullRequest
1 голос
/ 21 октября 2019

Мне нужно просмотреть все значения таблиц и перехватить их в список массивов (или в какое-нибудь предложенное вами место)

enter image description here

xpath в первой строкесписок

    /html[1]/body[1]/div[4]/div[1]/main[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[4]/div[2]/table[1]/tbody[1]/tr[1]/th[1]

    /html[1]/body[1]/div[4]/div[1]/main[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[4]/div[2]/table[1]/tbody[1]/tr[1]/td[1]

    /html[1]/body[1]/div[4]/div[1]/main[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[4]/div[2]/table[1]/tbody[1]/tr[1]/td[2]

.
.
    /html[1]/body[1]/div[4]/div[1]/main[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[4]/div[2]/table[1]/tbody[1]/tr[1]/td[5]

2-я строка, несколько путей x

/html[1]/body[1]/div[4]/div[1]/main[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[4]/div[2]/table[1]/tbody[1]/tr[2]/th[1]

/html[1]/body[1]/div[4]/div[1]/main[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[4]/div[2]/table[1]/tbody[1]/tr[2]/td[1]

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

DOM

enter image description here

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Мы можем начать использовать относительный xpath для таблицы tbody, затем мы можем использовать tagName метод класса By для имен тегов html 'tr' и 'td', чтобы извлечь строки и элементы столбцов, после чего мы можем сохранить их вarrayList, как показано ниже в коде.

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

@Test 
public void testWebTable()  { 
    WebElement simpleTable = driver.findElement(By.xpath("//table[1]/tbody[1]")); 
    // Get all rows 
    List<WebElement> rows = simpleTable.findElements(By.tagName("tr")); 
    List<String> webTableData = new ArrayList<String>(); 

    // Print/Save data from each row 

    for (WebElement row : rows) { 
        List<WebElement> cols = row.findElements(By.tagName("td")); 
        for (WebElement col : cols) {
            webTableData.add(col.getText());
             System.out.print(col.getText() + "\t"); 
           } System.out.println(); 
       }
    }
0 голосов
/ 21 октября 2019

Вы можете использовать библиотеку синтаксического анализатора PHP Simple HTML Dom для простого анализа этих данных таблицы. Проверить https://simplehtmldom.sourceforge.io/

...