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代码

①遍历表格所有单元格

实例代码

 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代码

<!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子元素。

总结

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

转载于:https://www.cnblogs.com/linuxchao/p/linuxchao-python-selenium-table.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Selenium来爬取网页上的表格数据。以下是使用SeleniumPython来实现这个过程的基本步骤: 1. 安装Selenium库和浏览器驱动:首先,确保您已安装Selenium库,并下载适用于您使用的浏览器的驱动程序,例如Chrome或Firefox的驱动程序。 2. 导入所需的库:在Python脚本中,导入Selenium库和其他需要的库。 ```python from selenium import webdriver from selenium.webdriver.common.by import By ``` 3. 启动浏览器会话:使用选定的浏览器驱动程序启动浏览器会话。 ```python driver = webdriver.Chrome('path_to_chromedriver') ``` 4. 打开目标网页:使用`get()`方法打开包含表格的网页。 ```python driver.get('https://www.example.com/table') ``` 5. 定位表格元素:使用Selenium提供的不同定位方法(例如ID、Xpath、CSS选择器等)定位到包含表格的HTML元素。 ```python table = driver.find_element(By.ID, 'table_id') ``` 6. 提取表格数据:使用Selenium提供的方法,如`find_elements()`,`get_attribute()`等,从表格元素中提取所需的数据。 ```python rows = table.find_elements(By.TAG_NAME, 'tr') for row in rows: cells = row.find_elements(By.TAG_NAME, 'td') for cell in cells: print(cell.text) ``` 7. 关闭浏览器会话:完成数据提取后,关闭浏览器会话。 ```python driver.quit() ``` 注意:Selenium是一种自动化工具,它模拟用户在浏览器中的操作。请确保您的使用方式符合相关网站的使用政策,并尊重网站的爬取限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值