Java 获取表格中某一个单元格的值
需求
搜索页面返回表格样搜索结果, 获取搜索结果中某个单元格的具体值.
以下图为例, 下表是搜索返回的结果, 第一行是各个列的名字, 其它是具体的返回值.
方法1:
根据用户输入的表头名来确定是第几列, 再根据用户输入的行数锁定单元格.
package com.thanos.ebony2;
import static com.thanos.ebony2.bean.AntFormBrowser.BROWSER;
import com.thanos.ebony2.exception.NoSuchRow; import java.util.ArrayList;
import java.util.List; import org.openqa.selenium.By;
import org.openqa.selenium.WebElement; import com.thanos.ebony2.bean.AntProp; @SuppressWarnings(value = {"unchecked", "rawtypes"})
public class Test {
public static void main(String[] args) { //测试代码
BROWSER.open(AntProp.getProp("XXXURL"));
BROWSER.pause(1);
BROWSER.click("//*[@id=\"abc\"]/div/div/form/div[2]/div/div/div/span/div[1]/button");
BROWSER.pause(1);
System.out.println(getRowNo());
System.out.println(getColNo());
String a = getCell("A", 10); // 取A列第10行的值
System.out.println("cellValue a: " + a);
String b = getCell("G", 11); // 取G列第11行的值
System.out.println("cellValue b: " + b);
} /*
* 参数: 列名 String tabName; 行数 int rowNo
* 返回值: 某一个格子的值
*/ public static String getCell(String colName, int rowNo) {
int totalRow = getRowNo();
if (rowNo < 1) {
throw new NoSuchRow(String.format("row [%s]", rowNo));
} else if(rowNo > totalRow) {
throw new NoSuchRow(String.format("There's %s rows, your input %s is not reachable", totalRow, rowNo));
} List<WebElement> temp = BROWSER.getWebDriver().findElements(By.tagName("tr"));
List<WebElement> currentRow = temp.subList(1, temp.size()-1); //去掉表头那一行
String[] rowData = currentRow.get(rowNo-1).getText().split(" "); //注: 因第一行是表头(列名), 所以取单元格值时表头不计入rowNo. 即: rowNo传入1时所取的值是表头下面第一行的值.
List<WebElement> tags = BROWSER.getWebDriver().findElements(By.tagName("th"));
List<String> tagNames = new ArrayList();
for (WebElement ele : tags) {
String name = ele.getText();
tagNames.add(name);
}
// Float cellValue = 0f;
String cellValue = "";
int index = tagNames.indexOf(colName);
// cellValue = Float.parseFloat(rowData[index]);
cellValue = rowData[index];
return cellValue; } public static int getColNo() {
List<WebElement> elements = BROWSER.getWebDriver().findElements(By.tagName("th"));
// for (WebElement webElement : elements) {
// System.out.println(webElement.getText());
// }
return elements.size();
} public static int getRowNo() {
List<WebElement> elements = BROWSER.getWebDriver().findElements(By.tagName("tr"));
// for (WebElement webElement : elements) {
// System.out.println(webElement.getText());
// }
return elements.size()-1;
} }
表头名 + 行数
方法2:
用两层循环把每一个单元格放入二维数组, 再根据用户输入的行数和列数定位单元格并取值.
package com.thanos.ebony2;
import static com.thanos.ebony2.bean.AntFormBrowser.BROWSER;
import com.thanos.ebony2.exception.NoSuchRow; import java.util.ArrayList;
import java.util.List; import org.openqa.selenium.By;
import org.openqa.selenium.WebElement; import com.thanos.ebony2.bean.AntProp; @SuppressWarnings(value = {"unchecked", "rawtypes"})
public class Test {
public static void main(String[] args) { //测试代码
BROWSER.open(AntProp.getProp("XXXURL"));
BROWSER.pause(1);
BROWSER.click("//*[@id=\"abc\"]/div/div/form/div[2]/div/div/div/span/div[1]/button");
BROWSER.pause(1);
System.out.println(getRowNo());
System.out.println(getColNo());
String b = getCellValue(10, 1); //取第10行第1列的值
System.out.println("cellValue b: " + b);
} /*
* 参数: 列 int colNo, 行 int rowNo
* 返回值: 某一个格子的值
*/ public static String getCellValue(int colNo, int rowNo) {
List<WebElement> tempR = BROWSER.getWebDriver().findElements(By.tagName("tr"));
List<WebElement> tempRow = tempR.subList(1, tempR.size()-1); //去掉表头(表头不计入行数)
int totalRow = getRowNo();
int totalCol = getColNo();
Object[][] table = new Object[totalRow][totalCol];
for (int i = 0; i < tempRow.size(); i++) {
List<WebElement> currCol = tempRow.get(i).findElements(By.tagName("td"));
for (int j = 0; j < currCol.size(); j++) {
table[i][j] = currCol.get(j).getText();
}
} return (String) table[colNo-1][rowNo-1]; //返回单元格的值
} public static int getColNo() {
List<WebElement> elements = BROWSER.getWebDriver().findElements(By.tagName("th"));
// for (WebElement webElement : elements) {
// System.out.println(webElement.getText());
// }
return elements.size();
} public static int getRowNo() {
List<WebElement> elements = BROWSER.getWebDriver().findElements(By.tagName("tr"));
// for (WebElement webElement : elements) {
// System.out.println(webElement.getText());
// }
return elements.size()-1;
} }
行数 + 列数
Java 获取表格中某一个单元格的值的更多相关文章
- Excel表格中单击一个单元格如何将整行整列变色
视图->阅读模式 开启阅读模式后 就会显示如下情景,是的你点击任意单元格后,显示整行/整列
- C# 获取Excel中的合并单元格
C# 获取Excel中的合并单元格 我们在制作表格时,有时经常需要合并及取消合并一些单元格.在取消合并单元格时需要逐个查找及取消,比较麻烦.这里分享一个简单的方法来识别Excel中的合并单元格,识别这 ...
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
Visual Studio 2017中使用正则修改部分内容 最近在项目中想实现一个小工具,需要根据类的属性<summary>的内容加上相应的[Description]特性,需要实现的效 ...
- Devexpress Winform Gridcontrol 中根据条件单元格的值改变单元格的颜色等属性。
提供一下三种方法 1.使用设计器 点击gridcontrol控件,run designer,format Condtions, add,然后进行各种条件的设置. 2.用代码代替设计器. 实例代码: p ...
- java poi给sheet表格中的某个单元格添加批注
Label l = , , "A cell with a comment"); WritableCellFeatures cellFeatures = new WritableCe ...
- html 让table表格中的td单元格内容过长显示为固定长度,多余部分用省略号代替?
<th class="wrap">商品名</th> .wrap{ width: 150px; //设置需要固定的宽度 white-space: nowrap ...
- jquery遍历table为每一个单元格取值及赋值
表格代码 <tr> <td> <input type="text" style="border: none; text-align: cen ...
- DbGridEh 一个单元格的值改变时另一单元格的值随之改变
你可以为每个字段设置OnSetText事件,这样在输入完后回车会移动时就会触发,或者在adoquery的beforepost中或afterpost中都可以grid也提供了一些事件,也可以在某些条件下做 ...
- table里面,怎么根据checkbox选择的一行中的某个单元格的值是否为空,来判断是否该选中
<table class="stripe" id="tab2"> <tr> <th>选择</th> <th ...
随机推荐
- Oracle.ManagedDataAccess 提示ORA-01017 错误【解决方案】
Oracle.ManagedDataAccess 提示ORA-01017 错误[解决方案] Oracle.ManagedDataAccess 提示ORA-01017 错误[解决方案] [HKEY_LO ...
- Linux学习笔记之四————Linux常用命令之文件管理
Linux命令——文件管理相关命令 <1>查看文件信息:ls ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令. Linux文件或 ...
- eclipse svn 忽略 target目录
这个build失败的解决方案就是不要把你项目的 target目录放在src repository 里面,还有 .project 和 .classpath最好也别放到src repository 里. ...
- nginx ngx_http_sub_module使用
ngx_http_sub_module模块是一个过滤器,它修改网站响应内容中的字符串,比如你想把响应内容中的‘iuwai’全部替换成‘aaaaa‘,这个模块已经内置在nginx中,但是默认未安装,需要 ...
- C语言第三讲,基本数据类型
C语言第三讲,基本数据类型 一丶基本数据类型讲解 在C语言当中,有四种基本数据类型 分别是: 整形 浮点型 指针 聚合类型(数组和结构) 整型家族包括: 字符 短整型 整形 长整型 ** 都分为有符号 ...
- JavaWeb学习(二)———Tomcat服务器学习和使用(一)
一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml ...
- 【微收藏】FourShadows.js – 时间感知的算法驱动的图标阴影JS库
废话一箩筐,筐筐有心得 不小心养成了一个刷微博的习惯,主要还是关注一些前端人士,学习一些前端方面的知识,看到大家都有一些刷微博的小习惯.有的是转发一下,转发内容来一个标记(MARK).也有评论中标记为 ...
- python的Web框架,会话保持及Form表单
会话 从打开浏览器访问到关闭浏览器,这就是一次会话. cookie 技术 cookie是保存在浏览器的,安全度比较低. # 设置cookie范式,在view中设置 def index(request) ...
- Go 标准库 —— sync.Mutex 互斥锁
Mutex 是一个互斥锁,可以创建为其他结构体的字段:零值为解锁状态.Mutex 类型的锁和线程无关,可以由不同的线程加锁和解锁. 方法 func (*Mutex) Lock func (m *Mut ...
- 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取
公众号第三方平台开发 教程一 创建公众号第三方平台 公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取 公众号第三方平台开发 教程三 微信公众号 ...