欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

说说watir-webdriver那些事(十二)table的处理

程序员文章站 2022-03-02 21:10:43
...

Table是经常遇到的一个数据展示组件,我们在做自动化测试的时候免不了跟他打交道。这里我们简单说一下如何处理Table这样的组件。

首先还是举个例子,

 

 

<html>
    <head>
        <title>Table</title>
        <style>
            table {border: 1px solid #ccc}
        </style>
    </head>
    <body>
        <table id = "t">
            <th>C1</th><th>C2</th><th>C3</th>
            <tr>
                <td>v1</td>
                <td>v2</td>
                <td>v3</td>
            </tr>
            <tr>
                <td>k1</td>
                <td>k2</td>
                <td>k3</td>
            </tr>
        </table>
    </body>
</html>

 

 

然后我们演练一下具体的table操作:

 

require 'watir-webdriver'
b=Watir::Browser.new
b.goto "........................../tables.html"
b.table(:id=>"t").rows #所有的行
b.table(:id=>"t").[](0) #获取第一行
b.table(:id=>"t").[](0).cells #获取第一行的所有单元格
b.table(:id=>"t").[](0).[](0) #获取第一行第一列的单元格
#注意上面列出的都是获取的元素(与其他诸如文本框空间等都有相同的父类)并不是文本
#对于以上所提到的对象,都是从Element继承而来,所以click,enabled?,exists?,fireEvent,flash,focus等方法都直接可以#使用。(这里说明涉及到watir的源码类结构如有兴趣可以自己看一下相关的源码)
 

上面的方法基本上可以获取Table的所有元素了,当然你会发现table的单元格里面经常存在有相应的控件,比如说checkbox控件,text_field控件等,遇到这样的情况,可以使用层级关系的定位来找到相应的控件

 

比如说表格的第二行第一列的checkbox,需要选择,可以使用如下代码:

 

b.table(:id=>"t").[](1).[](0).checkbox set

 还要注意,watir中的元素都是从0开始算第一个的,这个与C语言等很多高级语言都比较相似