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 Jetpack之AppCompat(一)
今天我们来聊一聊有关AppCompat,作为Android Jetpack系列文章的开篇.说到Android Jetpack,我们先看一下这张图: 从图中我们可以看到,整个Android Jetpac ...
- 分享 Xamarin.android 关于使用SQLiteOpenHelper的小白经验
关于使用SQLiteOpenHelper的使用,对于小白的我,百度啦相当多的大神的介绍,均未能让我这新手(零基础)成功学会,参考了http://www.cnblogs.com/yaozhenfa/p/ ...
- CenOS_命令帮助
1.帮助 1.1man 基本语法: man[命令或配置文件](功能描述:获得帮助信息) 如:man ll 1.2help 基本语法: help 命令 (功能描述:获得 shell 内置命令的帮助信息) ...
- 'module' object has no attribute 'Thread'解决方法及模块加载顺序
源码片段: class myThread(threading.Thread): def __init__(self, threadID, name, counter): threading.Threa ...
- 【Teradata】TD Unicode编码格式下varchar定义测试
如下测试表,每个字段字符编码格式均为Unicode. 1.varchar(1)可以存储1个汉字,也只能存储1个ASCII字符. --创建表nc_test,每个字段编码格式均设定为Unicode[使用S ...
- 修改Android idc文件
安卓系统idc文件里面包含以下几点内容: 1 #=0 外部设备 =1内部设备 2 device.internal = 0 3 #定义:keyboard.layout = <name> 4 ...
- [Swift]动态变化顶部状态栏(statusBar)的颜色
顶部状态栏(statusBar)的两种样式: (1).default 样式:黑色. (2).light 样式:白色 一.无导航栏情况 如果没有使用导航控制器 UINavigationControlle ...
- Json,Gson,Ajax基础知识
//json 是一种轻量级的文本格式,解析简单,他也是一键值来存,数据与数据的分割是以,来分割 //{} 看到大括号就是一个对象,[]代表集合 ,基本上所有数据的交互都是以json格式来进行传递的 / ...
- 安装Adobe时出现Adobe Application Manager丢失或损坏解决方法
很多朋友在安装Adobe系列产品时出现Adobe Application Manager丢失或损坏,这是由于上次安装的Adobe产品没有正确卸载,导致这次安装失败.那么如何解决这一问题呢? 1.下载安 ...
- 两个案例轻松理解MyBatis中的TypeHandler!
在做开发时,我们经常会遇到这样一些问题,比如我有一个Java中的Date数据类型,我想将之存到数据库的时候存成一个1970年至今的毫秒数,怎么实现?再比如我有一个User类,User类中有一个属性叫做 ...