前言
浏览器网页常常会包含各类表格,自动化测试工程师可能会经常操作表格中的行,列以及某些特定的单元格,因此熟练掌握表格的定位方法是自动化测试实施过程中必要的技能。
被测试网页的HTML代码
消费项目 | 一月 | 二月 |
衣服 | 1000元 | 500元 |
化妆品 | 3000元 | 500元 |
食物 | 3000元 | 650.00元 |
总计 | 7000元 | 1150元 |
一、遍历表格所有单元格
实例代码
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')
以上步骤完成表格中所有单元格的遍历输出,通过遍历可以实现读取任意单元格内容的操作。
二、定位表格中的某个元素
目的
定位表格中第二行第二列单元格
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代码
消费项目 | 一月 | 二月 |
衣服:
外套 内衣
| 1000元 | 500元 |
化妆品:
面霜 沐浴露
| 3000元 | 500元 |
食物:
主食 蔬菜
| 3000元 | 650.00元 |
总计 | 7000元 | 1150元 |
目的
在被测网页中,定位表格中第三行中的第一个“面霜”文字前的复选框。
//td[contains(.,'化妆品')]/input[1]
python定位语句:
element = driver.find_element_by_xpath('//td[contains(.,'化妆品')]/input[1]')
代码说明
先找到包含元素的单元格,在此单元格中再寻找子元素即可。表达式//td[contains(.,'化妆品')]表示模糊匹配文本内容包含“化妆”关键字的单元格td元素,//input[1]表示定位td下的第一个input子元素。
总结
这篇随笔写的很简单,实际工作中的表定位可能也会有各种各样的情况,但是这篇随笔确实基础,希望大家多练习吧。
上面是我收集的一些视频资源包
对于软件测试的的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你!
关注我的微信公众号【程序员二黑】免费获取
如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:785128166 里面有大牛分享学习经验