从网络表获取所有数据值

问题描述 投票:1回答:2

我需要遍历所有表值,并将其获取到数组列表(或您的某些建议位置)中]

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]

第二行,几个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[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

java selenium katalon-studio
2个回答
1
投票

我们可以开始使用相对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
投票

您可以使用PHP Simple HTML Dom解析器库轻松解析这些表数据。签出https://simplehtmldom.sourceforge.io/

© www.soinside.com 2019 - 2024. All rights reserved.