selenium之表格的定位
前言
浏览器网页常常会包含各类表格,自动化测试工程师可能会经常操作表格中的行,列以及某些特定的单元格,因此熟练掌握表格的定位方法是自动化测试实施过程中必要的技能。
被测试网页的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>
被测试网页HTML代码

①遍历表格所有单元格
实例代码
from selenium import webdriver
driver = webdriver.Firefox()
driver.get(r'file:///D:/pythonSeleniumTestCode/pythonStu/src/table.html')
#id定位方式获取整个表格对象
table = driver.find_element_by_id('table')
#通过标签名获取表格中所有行
trlist = driver.find_elements_by_tag_name('tr')
print(len(trlist))
for row in trlist:
#遍历行对象,获取每一个行中所有的列对象
tdlist = row.find_elements_by_tag_name('td')
for col in tdlist:
print(col.text + '\t',end='')
print('\n')
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')
以上步骤完成表格中所有单元格的遍历输出,通过遍历可以实现读取任意单元格内容的操作。
②定位表格中的某个元素
目的
定位表格中第二行第二列单元格
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)')
③定位表格中的子元素
被测试网页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>
被测试网页HTML代码

目的
在被测网页中,定位表格中第三行中的第一个“面霜”文字前的复选框。
//td[contains(.,'化妆品')]/input[1]
python定位语句:
element = driver.find_element_by_xpath('//td[contains(.,'化妆品')]/input[1]')
代码说明
先找到包含元素的单元格,在此单元格中再寻找子元素即可。表达式//td[contains(.,'化妆品')]表示模糊匹配文本内容包含“化妆”关键字的单元格td元素,//input[1]表示定位td下的第一个input子元素。
总结
这篇随笔写的很简单,实际工作中的表定位可能也会有各种各样的情况,但是这篇随笔确实基础,希望大家多练习吧。如果文章中有什么错误或者建议,评论给我,我会最快的速度回复你,谢谢!
selenium之表格的定位的更多相关文章
- selenium webdriver 表格的定位方法练习
selenium webdriver 表格的定位方法 html 数据准备 <html> <body> <div id="div1"> <i ...
- selenium与表格的二三事
今天遇到的问题是selenium与表格中行和列的问题! 我想要做的事情是统计当前的table有多少行,表格形式如下如所示: 图中所示为2行,我的定位方式是这样的 : table=driver.find ...
- selenium+java二元素定位
页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法. 测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 自动化测试步骤 定位元素 ...
- selenium自动化之元素定位方法
在使用selenium webdriver进行元素定位时,有8种基本元素定位方法(注意:并非只有8种,总共来说,有16种). 分别介绍如下: 1.name定位 (注意:必须确保name属性值在当前ht ...
- Python selenium PO By.XPATH定位元素报错
Python selenium PO By.XPATH定位元素报错 如下代码经常报错: # 首页的“新建投放计划”按钮 new_ads_plan = (By.XPATH, "//*[tex ...
- Python3-Selenium自动化测试框架(二)之selenium使用和元素定位
Selenium自动化测试框架(二)之selenium使用和元素定位 (一)selenium的简单使用 1.导包 from selenium import webdriver 2.初始化浏览器 # 驱 ...
- 11种常用css样式之表格和定位样式学习
table表格中border-collapse: collapse;/*表格边框是否合并*/border-spacing: 10px;/*表格边框之间的距离*/定位详情可以阅读position属性值4 ...
- Selenium WebDriver 8大定位方式
Selenium WebDriver 8大定位方式: driver.find_element_by_id() driver.find_element_by_name() driver.find_ele ...
- 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...
随机推荐
- 解决Android编译时出现aapt.exe finished with non-zero exit value 1(第二篇)
之前出现该错误,我用的是这个方法: https://www.cnblogs.com/tangZH/p/10691383.html 然而遗憾的是,这次不管用了,无奈,只好另寻他法,其实会出现这个错误就是 ...
- 安卓开发笔记(十):升级ListView为RecylerView的使用
概述 RecyclerView是什么 从Android 5.0开始,谷歌公司推出了一个用于大量数据展示的新控件RecylerView,可以用来代替传统的ListView,更加强大和灵活.Recycle ...
- C++基础——运算符重载友元函数示例
一.前言 其实本人学习C++的目的,只是为了体会OOP设计思想,并为利用System Verilog验证复杂设计做准备.如果想要真正做点软件方面项目级的东西,还需要掌握其他高级语言和库.框架等知识.因 ...
- 3星|路江涌《共演战略画布》:PPT技巧级别的创新,缺实际分析案例
作者用自己的思路综合现有各种战略思想,给出企业各阶段各要素的战略分析工具.主要是2*2矩阵和双S曲线两种工具. 从书中的插图来看,这些工具在PPT演示中效果应该会不错. 作者在书中用这些工具做的分析不 ...
- Java对象引用/JVM分级引用——强引用、软引用、弱引用、虚引用
无论是通过引用计数法判断对象的引用数量,还是通过可达性分析算法判断对象的引用链是否可达,判断对象是否存活都与“引用”有关, 相关资料:如何判断对象是否存活/死去 那么引用究竟是什么?让我们一起来看一下 ...
- Java Thread.join的作用和原理
很多人对Thread.join的作用以及实现了解得很少,毕竟这个api我们很少使用.这篇文章仍然会结合使用及原理进行深度分析 内容导航 Thread.join的作用 Thread.join的实现原理 ...
- Linux命令及架构部署大全
1.Linux系统基础知识 Linux 基础优化配置 Linux系统根目录结构介绍 linux系统重要子目录介绍 Linux基础命令(之一)详解 Linux基础命令(之二)详解 Linux文件系统 L ...
- 第一周 IP通信基础学习回顾
这周的课程首先让我们学习了计算机网络概述,了解计算机网络的定义和功能分别是:资源共享,信息传输与集中处理,负载均衡与分布处理,综合信息服务.同时也对计算机网络的演进,计算机网络的分类,计算机网络的性能 ...
- PMBook - 以考PMP为项目,整理项目章程
一.以考PMP为项目,整理项目章程 二.PMBook 制定项目章程:输出 参考资料:<PMBook第六版> 作 者: Jackson0714 出 处:http://www.cnblogs. ...
- mysql 设置自增主键id的起始值
修改user表,主键自增从20000开始 alter table user AUTO_INCREMENT=20000;