Java selenium 获取表格数据_Java&Selenium处理页面Table以及Table中随机位置的数据

本文档介绍了如何使用Java Selenium库来操作网页上的表格数据,包括获取表格的行数、列数,以及特定位置的单元格对象。同时,还提供了获取表格中特定单元格内元素的方法。

packageutil;importorg.openqa.selenium.By;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.WebElement;importjava.util.List;importjava.util.NoSuchElementException;import staticutil.WaitElementUtil.sleep;/** some method of controlling table

*

* @author: davieyang

* @create: 2018-08-05 14:04*/

public classTableUtil {//声明一个WebElement对象,用于存储页面的表格元素对象

privateWebElement _table;//为构造函数传入页面表格元素对象参数,调用TableUtil类的settable方法,将页面表格元素赋值给TableUtil类的_table成员变量

publicTableUtil (WebElement table){

setTable(table);

}//获取页面表格对象的方法

publicWebElement getTable(){return_table;

}//将页面表格元素赋值给TableUtil类中_table成员变量的方法

public voidsetTable(WebElement _table){this._table =_table;

}//获取表格元素的行数,查找表格元素有几个tr元素,有几个tr元素,就可以知道表格有几行,tr数量和表格行数相一致

public intgetRowCount(){

List tableRows = _table.findElements(By.tagName("tr"));returntableRows.size();

}//获取表格元素的列数,使用get(0)从容器中取出表格第一行的元素,查找有几个“td”,td数量和列数一致

public intgetColumnCount(){

List tableRows = _table.findElements(By.tagName("tr"));return tableRows.get(0).findElements(By.tagName("td")).size();

}//获取表格中某行某列的单元格对象

public WebElement getCell(int rowNo, int colNo)throwsNoSuchElementException{try{

List tableRows = _table.findElements(By.tagName("tr"));

System.out.println("行总数:" +tableRows.size());

System.out.println("行号:" +rowNo);

WebElement currentRow= tableRows.get(rowNo - 1);

List tableCols = currentRow.findElements(By.tagName("td"));

System.out.println("列总数:" +tableCols.size());

WebElement cell= tableCols.get(colNo-1);

System.out.println("列号:" +colNo);returncell;

}catch(NoSuchElementException e){throw new NoSuchElementException("没有找到相关元素");

}

}/*** 获得表格中某行某列的单元格中的某个页面元素对象,by参数用于定位某个表格中的页面元素,例如by.xpath("input[@type='text']")可以定义到表格中的输入框*/

public WebElement getWebElementInCell(int rowNo, int colNo, By by)throwsNoSuchElementException{try{

List tableRows = _table.findElements(By.tagName("tr"));//找到表格中的某一行,行号从0开始,例如第三行,则需要进行3-1来获取即“2”

WebElement currentRow = tableRows.get(rowNo-1);

List tableCols = currentRow.findElements(By.tagName("td"));//找到表格中的某一列,因为也是从0开始,所以要找到第三列,则需要进行3-1来获取即“2”

WebElement cell = tableCols.get(colNo-1);returncell.findElement(by);

}catch(NoSuchElementException e){throw new NoSuchElementException("没有找到相关元素");

}

}/***

*@paramdriver 浏览器驱动

*@paramrow 行号

*@paramcolumn 列号

*@return函数接受浏览器驱动,表格行数和列数,注意表头行,返回某个cell的值*/

public static String tableCell(WebDriver driver, int row, intcolumn) {

String text= null;//avoid get the head line of the table

row=row+1;

String xpath="//*[@id='table138']/tbody/tr["+row+"]/td["+column+"]";

WebElement table=driver.findElement(By.xpath(xpath));

text=table.getText();returntext;

}}

使用Selenium获取表格数据的步骤如下: 1. 首先,需要使用`find_elements_by_tag_name`方法获取所有的`table`元素。这可以通过调用`GetTableElements`函数来实现。\[1\] 2. 接下来,可以使用XPath或其他方法定位到需要获取数据表格。例如,可以使用XPath定位到表格的`tbody`元素。\[3\] 3. 使用`find_elements_by_tag_name`方法获取表格中的所有行元素,可以使用`tr`标签定位。\[3\] 4. 遍历每一行元素,可以使用`text`属性获取每一行的文本内容。可以使用`split`方法将文本内容按照空格分割成列表,得到每一行的数据。将每一行的数据添加到一个列表中。\[3\] 5. 最后,返回包含所有表格数据的列表。\[3\] 请注意,以上步骤是一个示例,具体的实现可能需要根据网页的结构和表格的特点进行调整。 #### 引用[.reference_title] - *1* [Python学习:用Selenium读取网页表格](https://blog.csdn.net/qdPython/article/details/127446876)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Python+Selenium获取列表数据(根据查询值进行编辑/删除操作)](https://blog.csdn.net/yutian8233/article/details/118769903)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值