自动化测试必备技能之Selenium表格定位

前言

 

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

 

 

被测试网页的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 里面有大牛分享学习经验
 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用selenium抓取网页表格的步骤如下: 1. 首先,导入所需的模块,包括selenium和webdriver等。 2. 创建一个webdriver对象,比如使用ChromeDriver来模拟浏览器操作。 3. 使用webdriver对象打开要抓取的网页。 4. 定位表格所在的元素,一般是使用Xpath或CSS选择器来定位。 5. 获取表格中的tr和td元素,并通过这些元素来获取表格的行数和列数。 6. 根据行数和列数创建一个相应大小的二维数组或表格。 7. 遍历tr和td元素,将每个td元素中的文本填入表格对应的位置。 8. 最后,你就可以得到抓取到的表格数据了。你可以根据需要将数据存储到数据库或其他格式的文件中。 以下是一个示例代码,演示了如何使用selenium抓取网页表格: from selenium import webdriver # 创建一个webdriver对象,比如使用ChromeDriver driver = webdriver.Chrome() # 打开要抓取的网页 driver.get("http://www.example.com") # 定位表格所在的元素 table_element = driver.find_element_by_xpath("//table") # 获取表格中的行数和列数 rows = len(table_element.find_elements_by_tag_name("tr")) cols = len(table_element.find_elements_by_tag_name("td")) # 创建一个相应大小的表格 table = [[0 for _ in range(cols)] for _ in range(rows)] # 遍历表格元素,将数据填入表格 for i, row in enumerate(table_element.find_elements_by_tag_name("tr")): for j, cell in enumerate(row.find_elements_by_tag_name("td")): table[i][j] = cell.text # 打印抓取到的表格数据 for row in table: print(row) # 关闭浏览器 driver.quit() 请根据实际需要修改代码中的网页地址和定位表格的方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [selenium抓取页面表格](https://blog.csdn.net/qq_24311495/article/details/107534361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Python+selenium网站数据表格快速收集存储到MYSQL](https://download.csdn.net/download/jiazhiguo/85501651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值