文档章节

selenium之表格的定位

爱码小士
 爱码小士
发布于 2018/12/12 19:22
字数 1258
阅读 98
收藏 0

真的勇士, 敢于直面惨淡的warning、 敢于正视淋漓的error

目录

  • 被测试网页的HTML代码
  • 1.遍历表格所有单元格
  • 2.定位表格中的某个元素
  • 3.定位表格中的子元素
  • 总结

浏览器网页常常会包含各类表格,自动化测试工程师可能会经常操作表格中的行,列以及某些特定的单元格,因此熟练掌握表格的定位方法是自动化测试实施过程中必要的技能。

被测试网页的HTML代码

被测试网页HTML代码

<!DOCTYPE html>
<html>
<body>
    <meta charset="UTF-8">
    <table width="400" border="1" id="table">
        <tr>
            <td align="left">消费项目</td>
            <td align="right">一月</td>
            <td align="right">二月</td>
        </tr>
        <tr>
            <td align="left">衣服</td>
            <td align="right">1000元</td>
            <td align="right">500元</td>
        </tr>
         <tr>
            <td align="left">化妆品</td>
            <td align="right">3000元</td>
            <td align="right">500元</td>
        </tr>
        <tr>
            <td align="left">食物</td>
            <td align="right">3000元</td>
            <td align="right">650.00元</td>
        </tr>
        <tr>
            <td align="left">总计</td>
            <td align="right">7000元</td>
            <td align="right">1150元</td>
        </tr>
    </table>
</body>
</html>

1.遍历表格所有单元格

1 from selenium import webdriver
 2 driver = webdriver.Firefox()
 3 driver.get(r'file:///D:/pythonSeleniumTestCode/pythonStu/src/table.html')
 4 #id定位方式获取整个表格对象
 5 table = driver.find_element_by_id('table')
 6 #通过标签名获取表格中所有行
 7 trlist = driver.find_elements_by_tag_name('tr')
 8 print(len(trlist))
 9 for row in trlist:
10     #遍历行对象,获取每一个行中所有的列对象
11     tdlist = row.find_elements_by_tag_name('td')
12     for col in tdlist:
13         print(col.text + '\t',end='')
14     print('\n')
15 driver.quit()

输出结果:


消费项目 一月 二月


衣服 1000元 500元


化妆品 3000元 500元


食物 3000元 650.00元


总计 7000元 1150元


实例代码逻辑

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

table=driver.find_element_by_id('table')

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

trlist=table.find_elements_by_tag_name('tr')

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

for row in trlist:
     #遍历行对象,获取每一个行中所有的列对象
     tdlist = row.find_elements_by_tag_name('td')
     for col in tdlist:
         print(col.text + '\t',end='')
     print('\n')

以上步骤完成表格中所有单元格的遍历输出,通过遍历可以实现读取任意单元格内容的操作。

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

目的:

定位表格中第二行第二列单元格

XPATH表达式

//table[@id='table']/tbody/tr[2]/td[2]

python定位语句:

element = driver.find_element_by_xpath('//table[@id='table']/tbody/tr[2]/td[2]')

CSS表达式:

table#table>tbody>tr:nth-child(2)>td:nth-child(2)

python定位语句:

element = driver.find_element_by_css_selector('table#table>tbody>tr:nth-child(2)>td:nth-child(2)')

如果对软件测试、接口测试、自动化测试、性能测试、LR脚本开发、面试经验交流。感兴趣可以175317069,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

3.定位表格中的子元素

被测试网页HTML代码

<!DOCTYPE html>
<html>
<body>
    <meta charset="UTF-8">
    <table width="400" border="1" id="table">
        <tr>
            <td align="left">消费项目</td>
            <td align="right">一月</td>
            <td align="right">二月</td>
        </tr>
        <tr>
            <td align="left">衣服:
                <input type="checkbox">外套</input>
                <input type="checkbox">内衣</input>
            </td>
            <td align="right">1000元</td>
            <td align="right">500元</td>
        </tr>
         <tr>
            <td align="left">化妆品:
                <input type="checkbox">面霜</input>
                <input type="checkbox">沐浴露</input>
            </td>
            <td align="right">3000元</td>
            <td align="right">500元</td>
        </tr>
        <tr>
            <td align="left">食物:
                <input type="checkbox">主食</input>
                <input type="checkbox">蔬菜</input>
            </td>
            <td align="right">3000元</td>
            <td align="right">650.00元</td>
        </tr>
        <tr>
            <td align="left">总计</td>
            <td align="right">7000元</td>
            <td align="right">1150元</td>
        </tr>
    </table>
</body>
</html>

目的:

在被测网页中,定位表格中第三行中的第一个“面霜”文字前的复选框。

//td[contains(.,'化妆品')]/input[1]

python定位语句:

element = driver.find_element_by_xpath('//td[contains(.,'化妆品')]/input[1]')

代码解释:

先找到包含元素的单元格,在此单元格中再寻找子元素即可。表达式//td[contains(.,'化妆品')]表示模糊匹配文本内容包含“化妆”关键字的单元格td元素,//input[1]表示定位td下的第一个input子元素。

总结

这篇随笔写的很简单,实际工作中的表定位可能也会有各种各样的情况,但是这篇随笔确实基础,希望大家多练习吧。如果文章中有什么错误或者建议,评论给我,谢谢!

© 著作权归作者所有

爱码小士
粉丝 57
博文 83
码字总数 194222
作品 0
深圳
技术主管
私信 提问
加载中

评论(0)

知识点043-selenium自动化测试网页工具的使用

【摘要】 Selenium是一个主要用于Web应用自动化测试的工具集合。但其作用不仅仅局限于测试领域,还可以用于浏览器行为模拟以及屏幕抓取等,在行业内有着广泛的应用。Selenium支持主流的浏览器...

侠客行之石头
2018/10/22
37
0
selenium1.X web Test experience

简介 Selenium 是一个健壮的工具集合,跨很多平台支持针对基于 web 的应用程序的测试自动化的敏捷开发。它是一个开源的、轻量级的自动化工具,很容易集成到各种项目中,支持多种编程语言,比...

李长春
2011/06/29
712
0
利用 Selenium 自动化 web 测试

简介 Selenium 是一个健壮的工具集合,跨很多平台支持针对基于 web 的应用程序的测试自动化的敏捷开发。它是一个开源的、轻量级的自动化工具,很容易集成到各种项目中,支持多种编程语言,比...

红薯
2011/01/18
5K
2
selenium2-python28-引入unittest单元测试框架-seleniuIDE介绍

为了方便简洁,我们就按照上图的数字标记介绍 selenium IDE 界面各个部分人作用: 1---文件(File):创建、打开和保存测试案例和测试案例集。 编辑(Edit):复制、粘贴、删除、撤销和选择测试案例中...

丰_申
2016/02/29
26
0
分享一个神器,Selenium 自动化测试工具

最近写项目的时候,用到了Selenium,一个 Web 端的自动化测试工具,直接运行在浏览器中,用来模拟用户操作。 Selenium 不仅仅可以用作自动化测试,还有很多种玩法,比如 Python 的爬虫,实现...

angkee
2018/05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

跟踪mybatis执行一条sql的流程

一次insert操作过程 以保存一条记录到表中这个简单的操作为例,就按这个例子来跟踪mybatis是如何执行sql语句的,要保存一个user记录到表中: sqlSession.insert("x.y.insertUser", user); ...

閒散人員
11分钟前
11
0
Android | 教你如何用华为HMS MLKit机器学习服务开发一个拍照翻译小程序

引子   想必有很多小伙伴喜欢外出旅游,能去海外玩一圈那是更好不过了,旅游前大家一定会对吃、穿、住、行、游玩路线做各种攻略,然后满怀期待的出发… 想象中的旅游   出发前,想象中的...

华为开发者论坛
12分钟前
5
0
Python3 超强企业级项目调试工具,PySnooper,调试Python3 更方便

感谢作者分享-http://bjbsair.com/2020-04-07/tech-info/30786.html 图/文:迷神 不知道有多少人和我一样,曾经把Print作为Python中使用频率最高的一个函数,成为python,print的重度户。为什...

曹长卿
13分钟前
10
0
Filebeat在windows下安装使用

一、windows下安装Filebeat 官网下载安装包 解压到指定目录,打开解压后的目录,打开filebeat.yml进行配置。 1、配置为输出到ElasticSearch ①:配置 Filebeat prospectors->path 这里的路径...

瑞查德-Jack
16分钟前
15
0
SpringBoot常用注解

@SpringBootApplication,替代@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan @ImportAutoConfiguration,导入配置类,一般做测试的时候用,正常优先使用@EnableAuto......

chinahufei
17分钟前
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部