qi_ling2005  http://jarvi.iteye.com/blog/1477837

andyguo  http://blog.csdn.net/gzh0222/article/details/7568490

以前在selenium RC 里面有一个getTable方法,是得到一个单元格中的文本。其详细描述如下:

Java代码  
  1. /** Gets the text from a cell of a table. The cellAddress syntax <span style="white-space: normal; #ffffff;">tableLocator.row.column</span>
  2. , where row and column start at 0.
  3. @param tableCellAddress a cell address, e.g. <span style="white-space: normal; #ffffff;">"foo.1.4"</span>
  4. @return the text from the specified cell
  5. */
  6. String getTable(String tableCellAddress);
/** Gets the text from a cell of a table. The cellAddress syntax tableLocator.row.column
, where row and column start at 0.
@param tableCellAddress a cell address, e.g. "foo.1.4"
@return the text from the specified cell
*/
String getTable(String tableCellAddress);

就是传入一个参数,这个参数的格式必须是tableLocator.row.column,如"foo.1.4",foo用于得到table对象,1.4代表在table里第1行第4列。行、列从0开始。

在selenium webdriver里,没有这样的方法,也就是说没有专门操作table的类。但我们可以自己封闭一个,这并不难。以上面的getTable方法为例,我们自己也可以创建这样功能的一个方法。

Java代码  
  1. public String getCellText(By by,String tableCellAddress)
public String getCellText(By by,String tableCellAddress)

我叫它getCellText,它有两个参数,第一个是By对象用于得到table对象, tableCellAddress 如"1.4",代表在table里第1行第4列。行、列从0开始。

以下面html代码为例:

Html代码  
  1. <html>
  2. <head>
  3. <title>Table</title>
  4. </head>
  5. <body>
  6. <table border="1" id="myTable">
  7. <tr>
  8. <th>Heading(row 0 ,cell 0)</th>
  9. <th>Another Heading(row 0 ,cell 1)</th>
  10. <th>Another Heading(row 0 ,cell 2)</th>
  11. </tr>
  12. <tr>
  13. <td>row 1, cell 0</td>
  14. <td>row 1, cell 1</td>
  15. <td>row 1, cell 2</td>
  16. </tr>
  17. <tr>
  18. <td>row 2, cell 0</td>
  19. <td>row 2, cell 1</td>
  20. <td>row 2, cell 2</td>
  21. </tr>
  22. </table>
  23. </body>
  24. </html>
<html><head><title>Table</title></head><body><table border="1" id="myTable"><tr><th>Heading(row 0 ,cell 0)</th><th>Another Heading(row 0 ,cell 1)</th><th>Another Heading(row 0 ,cell 2)</th></tr><tr><td>row 1, cell 0</td><td>row 1, cell 1</td><td>row 1, cell 2</td></tr><tr><td>row 2, cell 0</td><td>row 2, cell 1</td><td>row 2, cell 2</td></tr></table></body>
</html>

示例代码如下:

Java代码  
  1. import java.util.List;
  2. import org.openqa.selenium.By;
  3. import org.openqa.selenium.NoSuchElementException;
  4. import org.openqa.selenium.WebDriver;
  5. import org.openqa.selenium.WebElement;
  6. import org.openqa.selenium.firefox.FirefoxDriver;
  7. public class Table {
  8. /**
  9. * @author gongjf
  10. */
  11. private WebDriver driver;
  12. Table(WebDriver driver){
  13. this.driver = driver;
  14. }
  15. /** 从一个table的单元格中得到文本值. 参数tableCellAddress的格式为
  16. row.column, 行列从0开始.
  17. @param by  用于得到table对象
  18. @param tableCellAddress 一个单元格地址, 如. "1.4"
  19. @return 从一个table的单元格中得到文本值
  20. */
  21. public String getCellText(By by,String tableCellAddress) {
  22. //得到table元素对象
  23. WebElement table = driver.findElement(by);
  24. //对所要查找的单元格位置字符串进行分解,得到其对应行、列。
  25. int index = tableCellAddress.trim().indexOf('.');
  26. int row =  Integer.parseInt(tableCellAddress.substring(0, index));
  27. int cell = Integer.parseInt(tableCellAddress.substring(index+1));
  28. //得到table表中所有行对象,并得到所要查询的行对象。
  29. List<WebElement> rows = table.findElements(By.tagName("tr"));
  30. WebElement theRow = rows.get(row);
  31. //调用getCell方法得到对应的列对象,然后得到要查询的文本。
  32. String text = getCell(theRow, cell).getText();
  33. return text;
  34. }
  35. private WebElement getCell(WebElement Row,int cell){
  36. List<WebElement> cells;
  37. WebElement target = null;
  38. //列里面有"<th>"、"<td>"两种标签,所以分开处理。
  39. if(Row.findElements(By.tagName("th")).size()>0){
  40. cells = Row.findElements(By.tagName("th"));
  41. target = cells.get(cell);
  42. }
  43. if(Row.findElements(By.tagName("td")).size()>0){
  44. cells = Row.findElements(By.tagName("td"));
  45. target = cells.get(cell);
  46. }
  47. return target;
  48. }
  49. public static void main(String[] args) {
  50. WebDriver driver;
  51. System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");
  52. driver = new FirefoxDriver();
  53. driver.get("file:///C:/Documents and Settings/Gongjf/桌面/selenium_test/table.html");
  54. Table table = new Table(driver);
  55. By by = By.id("myTable");
  56. String address = "0.2";
  57. System.out.println(table.getCellText(by, address));
  58. }
  59. }
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;public class Table {/*** @author gongjf*/private WebDriver driver;Table(WebDriver driver){this.driver = driver;}/** 从一个table的单元格中得到文本值. 参数tableCellAddress的格式为row.column, 行列从0开始.@param by  用于得到table对象@param tableCellAddress 一个单元格地址, 如. "1.4"@return 从一个table的单元格中得到文本值*/public String getCellText(By by,String tableCellAddress) {//得到table元素对象WebElement table = driver.findElement(by);//对所要查找的单元格位置字符串进行分解,得到其对应行、列。int index = tableCellAddress.trim().indexOf('.');int row =  Integer.parseInt(tableCellAddress.substring(0, index));int cell = Integer.parseInt(tableCellAddress.substring(index+1));//得到table表中所有行对象,并得到所要查询的行对象。List<WebElement> rows = table.findElements(By.tagName("tr"));WebElement theRow = rows.get(row);//调用getCell方法得到对应的列对象,然后得到要查询的文本。String text = getCell(theRow, cell).getText();return text;}private WebElement getCell(WebElement Row,int cell){List<WebElement> cells;WebElement target = null;//列里面有"<th>"、"<td>"两种标签,所以分开处理。if(Row.findElements(By.tagName("th")).size()>0){cells = Row.findElements(By.tagName("th"));target = cells.get(cell);}if(Row.findElements(By.tagName("td")).size()>0){cells = Row.findElements(By.tagName("td"));target = cells.get(cell);}return target;}public static void main(String[] args) {WebDriver driver;System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");  driver = new FirefoxDriver();driver.get("file:///C:/Documents and Settings/Gongjf/桌面/selenium_test/table.html");Table table = new Table(driver);By by = By.id("myTable");String address = "0.2";System.out.println(table.getCellText(by, address));}}

运行代码将输出

Java代码  
  1. Another Heading(row 0 ,cell 2)
Another Heading(row 0 ,cell 2)

ps:   这里我只是以得到一个table中单元格的文本为例,但是从代码可以看出,对table的基本操作都有涉及到。有用到的同学可以自己包装一个完整的table类。

selenium 如何处理table相关推荐

  1. Selenium 如何处理多层嵌套 iframe

    文章目录 Selenium 如何处理多层嵌套 iframe 1.如果 iframe 里面还套了一个 iframe 2.如何不直接回到主文档,而是返回上一层 iframe Selenium 如何处理多层 ...

  2. Selenium自动化测试面试题

    目录 1.什么是自动化测试.自动化测试的优势是什么? 2.什么样的项目比较适合做自动化测试,什么样的不适合做自动化测试? 3.说一下开展自动化工作的主要流程是怎样的? 4.在制定自动化测试计划的时候一 ...

  3. Selenium自动化测试面试题全家桶

    Selenium自动化测试面试题 一.目录 1.什么是自动化测试.自动化测试的优势是什么? 2.什么样的项目比较适合做自动化测试,什么样的不适合做自动化测试? 3.说一下开展自动化工作的主要流程是怎样 ...

  4. 【软件测试面试】面试了字节、美团、腾讯等30几家公司后,才知道软件测试面试全是这个套路......

    一.Linux系统应用和环境配置: 1.Linux系统的操作命令给我说10个,一般用什么工具远程连接Linux服务器? 2.Linux中的日志存储在哪里?怎么查看日志内容? 3.Linux中top和p ...

  5. 面试了字节、美团、腾讯等30几家公司后,才知道软件测试面试全是这个套路......

    一.Linux系统应用和环境配置: 1.Linux系统的操作命令给我说10个,一般用什么工具远程连接Linux服务器? 2.Linux中的日志存储在哪里?怎么查看日志内容? 3.Linux中top和p ...

  6. html table rownum,Python+Selenium获取HTML-Table表格数据

    在自动化中,有时我们会遇到html表格,需要对表格添加的内容判断其正确性,那么怎么才能取得表格数据呢? 1.通过selenium定位方式(id,name,xpath等方式)定位table标签 定义基类 ...

  7. Selenium xpath无法解析的如何处理

    Selenium xpath无法解析的如何处理 一.问题描述 Xpath无法解析的原因 使用selenium加载时没有加入等待时间,导致页面元素无法加载xpath无法解析 xpath语句未能准确定位 ...

  8. python自动访问网页_Python自动化 selenium 网页自动化-在访问一个网页时弹出的浏览器窗口,我该如何处理?...

    相信大家在使用selenium做网页自动化时,会遇到如下这样的一个场景: 在你使用get访问某一个网址时,会在页面中弹出如上图所示的弹出框. 首先想到是利用Alert类来处理它. 然而,很不幸,Ale ...

  9. html如何将多个复选框组织成一组_[Selenium]18.如何处理一组元素

    场景 button group就是元素组,将一组按钮排列在一起.处理这种对象的思路一般是使用find_elements_by_XXXX方法, 然后使用index或属性去定位更具体的元素 代码 下面的代 ...

  10. Java selenium 获取表格数据_Java+Selenium 如何参数化验证Table表格数据

    场景: 当我们编写脚本时候,需要验证某个表格某一列数据,或者多个列数据. 如果每验证一个就写一个方法,实在是太费事, 因此我们需要有参数化的思想,把某列数据看成固定的元素,然后去验证即可. 1. 示例 ...

最新文章

  1. 【NLP】jieba分词-Python中文分词领域的佼佼者
  2. 如何查看ddos 放开的ip
  3. 一起学习C语言:函数(二)
  4. 为机场按上一双“慧眼”消灭飞机的“黑色十分钟”
  5. python_正则表达式匹配ip
  6. e480win7显卡驱动_win7系统联想e480安装的操作方法
  7. 计算机网络之IP报文
  8. Manjaro20KDE桌面环境安装Google输入法
  9. ffmpeg视频转码压缩
  10. python从入门到精通编程汪老师_游戏AI开发从入门到精通:最全游戏AI编程书单...
  11. 美丽的诗句 撩妹首选哦!
  12. iPadOS生产力翻身,Mac Pro官方攒机 | 软、硬皆出彩的WWDC19
  13. 手机注册服务器异常是什么问题,ohho注册不了网络异常
  14. python kite 云盘下载
  15. 0x80073712_解决Windows 组件存储已损坏,0x80073712错误
  16. 微信小程序----App生命周期
  17. (11)RabbitMQ的mandatory、immediate和ReturnListener
  18. Thinking-in-Java 读书笔记-11-持有对象
  19. python cocos2d菜鸟教程,cocos2dx技术选型
  20. 【信息安全第三章同余习题】把剩余类1(mod 5)写成模15的剩余类之和

热门文章

  1. Domino 邮箱服务器接收不存在的邮箱账号的邮件
  2. Length of Last Word
  3. Android——列表选择框(Spinner)
  4. 半边数据结构(The_Half-Edge_Data_Structure)
  5. 韩顺平的java入门到精通中serversql笔记(包括emp表和dept表,linux的mysql版)
  6. 2.3线性表的链式表示和实现(静态链表)
  7. 《大道至简》第一章,伪代码。
  8. factory工厂模式之工厂方法FactoryMethod
  9. 互联网公司如何有效执行流程的心得
  10. 深入浅出理解 COOKIE MAPPING