页面元素定位方法---表格定位

1. 遍历表格所有单元格

被测试网页table1.html所有单元格

 1 <html>
 2     <body>
 3         <table width="400" border="1" id="table">
 4             <tr>
 5                 <td align="left">图书购买清单</th>
 6                 <td align="right">一月</th>
 7                 <td align="right">二月</th>
 8             </tr>
 9             <tr>
10                 <td align="left">python</td>
11                 <td align="right">180元</td>
12                 <td align="right">200元</td>
13             </tr>
14             <tr>
15                 <td align="left">Oracle</td>
16                 <td align="right">290元</td>
17                 <td align="right">150元</td>
18             </tr>
19             <tr>
20                 <td align="left">Selenium自动化测试</td>
21                 <td align="right">300元</td>
22                 <td align="right">260元</td>
23             </tr>
24             <tr>
25                 <td align="left">LoadRunner</td>
26                 <td align="right">160元</td>
27                 <td align="right">140元</td>
28             </tr>
29             <tr>
30                 <td align="left">总计</th>
31                 <td align="right">930元</th>
32                 <td align="right">750元</th>
33             </tr>
34         </table>
35     </body>
36 </html>

被测试内容展示如下:

 

实例代码逻辑:

  1. 先获取整个表格的页面对象

  2. 在表格页面元素对象中,获取所有的tr元素对象,并存储在trList对象中。

  3. 循环遍历存储表格行对象的trList对象,每获取一行中所有的单元格对象(存储在tdList对象中),就循环遍历一次,并将每个单元格的文本内容输出。

 Python实例代码:

#encoding=utf-8
from selenium import webdriver

driver=webdriver.Ie()
driver.get("http://127.0.0.1/table1.html")
#通过id定位方式获取整个表格对象
table=driver.find_element_by_id("table")
# print type(table)
#
通过标签名获取表格中的所有行对象
trList=table.find_elements_by_tag_name("tr")
#断言获取的表格行数是否等于预期
assert len(trList)==6,"表格行数不符!"
# 遍历表格行对象
for row in trList:
    # 获取每一行中所有列对象
   
tdList=row.find_elements_by_tag_name("td")
    #遍历表格列对象
   
for col in tdList:
        #获取单元格的文本内容
       
print col.text + "\t",
    print

driver.quit()

2. 定位表格中的某个元素

基于被测试网页table1.html代码测试

Python实例代码:

#encoding=utf-8
from selenium import webdriver

driver=webdriver.Ie()
driver.get("http://127.0.0.1/table1.html")

#获取表格的第二行第二列单元格内容
cell=driver.find_element_by_xpath("//*[@id='table']/tbody/tr[2]/td[2]")
print cell.text
#获取表格的第五行第一列单元格内容
cell=driver.find_element_by_xpath("//*[@id='table']/tbody/tr[5]/td[1]")
print cell.text

driver.quit()

3. 定位表格中的子元素

测试代码:

 1 <html>
 2     <body>
 3         <table width="700" border="1" id="table">
 4             <tr>
 5                 <td align="left">图书购买清单</th>
 6                 <td align="right">一月</th>
 7                 <td align="right">二月</th>
 8             </tr>
 9             <tr>
10                 <td align="left">python:
11                     <input type='checkbox'>python开发入门教程</input>
12                     <input type='checkbox'>python开发高级篇</input>
13                 </td>
14                 <td align="right" >180元</td>
15                 <td align="right" >200元</td>
16             </tr>
17             <tr>
18                 <td align="left">Selenium:
19                     <input type='checkbox'>selenium单元测试框架</input>
20                     <input type='checkbox'>selenium接口测试框架</input>
21                 </td>
22                 <td align="right">300元</td>
23                 <td align="right">260元</td>
24             </tr>
25             <tr>
26                 <td align="left">LoadRunner:
27                     <input type='radio'>selenium单元测试框架</input>
28                     <input type='radio'>selenium接口测试框架</input>
29                 </td>
30                 <td align="right">160元</td>
31                 <td align="right">140元</td>
32             </tr>
33             <tr>
34                 <td align="left">总计</th>
35                 <td align="right">640元</th>
36                 <td align="right">700元</th>
37             </tr>
38         </table>
39     </body>
40 </html>

被测试内容展示如下:

 

实例代码逻辑:

  1. 先找到包含子元素的单元格,在此单元格中在查找子元素 

定位子元素的方法:

  1. 可通过模糊匹配文本内容定位单元格

    比如://td[contains(.,'python')]/input[1]

  2. 通过xpath轴方式查找该子元素

    比如://td[contains(.,'python')]/descendant::input[1] 

Python实例代码:

#encoding=utf-8
from selenium import webdriver
import  time
driver=webdriver.Ie()
driver.get("http://127.0.0.1/table2.html")
#定位包含python文本的td 标签的第一个复选框,并选中
checkbox=driver.find_element_by_xpath("//td[contains(.,'python')]/input[1]")
checkbox.click()
#定位包含LoadRunner文本的td 标签的第一个单选按钮,并选中
radio=driver.find_element_by_xpath("//td[contains(.,'LoadRunner')]/input[2]")
radio.click()
#等待3秒以查看结果
time.sleep(3)
driver.quit()

posted @ 2018-06-12 13:10  Conner&sun  阅读(4383)  评论(0编辑  收藏  举报