• 页面元素定位方法---表格定位


    1. 遍历表格所有单元格

    被测试网页table1.html所有单元格

     1 <html>
     2     <body>
     3         <table width="400" border="1" id="table">
     4             <tr>
     5                 <td align="left">图书购买清单</th>
     6                 <td align="right">一月</th>
     7                 <td align="right">二月</th>
     8             </tr>
     9             <tr>
    10                 <td align="left">python</td>
    11                 <td align="right">180元</td>
    12                 <td align="right">200元</td>
    13             </tr>
    14             <tr>
    15                 <td align="left">Oracle</td>
    16                 <td align="right">290元</td>
    17                 <td align="right">150元</td>
    18             </tr>
    19             <tr>
    20                 <td align="left">Selenium自动化测试</td>
    21                 <td align="right">300元</td>
    22                 <td align="right">260元</td>
    23             </tr>
    24             <tr>
    25                 <td align="left">LoadRunner</td>
    26                 <td align="right">160元</td>
    27                 <td align="right">140元</td>
    28             </tr>
    29             <tr>
    30                 <td align="left">总计</th>
    31                 <td align="right">930元</th>
    32                 <td align="right">750元</th>
    33             </tr>
    34         </table>
    35     </body>
    36 </html>

    被测试内容展示如下:

     

    实例代码逻辑:

    1. 先获取整个表格的页面对象

    2. 在表格页面元素对象中,获取所有的tr元素对象,并存储在trList对象中。

    3. 循环遍历存储表格行对象的trList对象,每获取一行中所有的单元格对象(存储在tdList对象中),就循环遍历一次,并将每个单元格的文本内容输出。

     Python实例代码:

    #encoding=utf-8
    from selenium import webdriver

    driver=webdriver.Ie()
    driver.get("http://127.0.0.1/table1.html")
    #通过id定位方式获取整个表格对象
    table=driver.find_element_by_id("table")
    # print type(table)
    #
    通过标签名获取表格中的所有行对象
    trList=table.find_elements_by_tag_name("tr")
    #断言获取的表格行数是否等于预期
    assert len(trList)==6,"表格行数不符!"
    # 遍历表格行对象
    for row in trList:
        # 获取每一行中所有列对象
       
    tdList=row.find_elements_by_tag_name("td")
        #遍历表格列对象
       
    for col in tdList:
            #获取单元格的文本内容
           
    print col.text + " ",
        print

    driver.quit()

    2. 定位表格中的某个元素

    基于被测试网页table1.html代码测试

    Python实例代码:

    #encoding=utf-8
    from selenium import webdriver

    driver=webdriver.Ie()
    driver.get("http://127.0.0.1/table1.html")

    #获取表格的第二行第二列单元格内容
    cell=driver.find_element_by_xpath("//*[@id='table']/tbody/tr[2]/td[2]")
    print cell.text
    #获取表格的第五行第一列单元格内容
    cell=driver.find_element_by_xpath("//*[@id='table']/tbody/tr[5]/td[1]")
    print cell.text

    driver.quit()

    3. 定位表格中的子元素

    测试代码:

     1 <html>
     2     <body>
     3         <table width="700" border="1" id="table">
     4             <tr>
     5                 <td align="left">图书购买清单</th>
     6                 <td align="right">一月</th>
     7                 <td align="right">二月</th>
     8             </tr>
     9             <tr>
    10                 <td align="left">python:
    11                     <input type='checkbox'>python开发入门教程</input>
    12                     <input type='checkbox'>python开发高级篇</input>
    13                 </td>
    14                 <td align="right" >180元</td>
    15                 <td align="right" >200元</td>
    16             </tr>
    17             <tr>
    18                 <td align="left">Selenium:
    19                     <input type='checkbox'>selenium单元测试框架</input>
    20                     <input type='checkbox'>selenium接口测试框架</input>
    21                 </td>
    22                 <td align="right">300元</td>
    23                 <td align="right">260元</td>
    24             </tr>
    25             <tr>
    26                 <td align="left">LoadRunner:
    27                     <input type='radio'>selenium单元测试框架</input>
    28                     <input type='radio'>selenium接口测试框架</input>
    29                 </td>
    30                 <td align="right">160元</td>
    31                 <td align="right">140元</td>
    32             </tr>
    33             <tr>
    34                 <td align="left">总计</th>
    35                 <td align="right">640元</th>
    36                 <td align="right">700元</th>
    37             </tr>
    38         </table>
    39     </body>
    40 </html>

    被测试内容展示如下:

     

    实例代码逻辑:

    1. 先找到包含子元素的单元格,在此单元格中在查找子元素 

    定位子元素的方法:

    1. 可通过模糊匹配文本内容定位单元格

      比如://td[contains(.,'python')]/input[1]

    2. 通过xpath轴方式查找该子元素

      比如://td[contains(.,'python')]/descendant::input[1] 

    Python实例代码:

    #encoding=utf-8
    from selenium import webdriver
    import  time
    driver=webdriver.Ie()
    driver.get("http://127.0.0.1/table2.html")
    #定位包含python文本的td 标签的第一个复选框,并选中
    checkbox=driver.find_element_by_xpath("//td[contains(.,'python')]/input[1]")
    checkbox.click()
    #定位包含LoadRunner文本的td 标签的第一个单选按钮,并选中
    radio=driver.find_element_by_xpath("//td[contains(.,'LoadRunner')]/input[2]")
    radio.click()
    #等待3秒以查看结果
    time.sleep(3)
    driver.quit()

  • 相关阅读:
    (floyd+DP) zoj 3027
    (树形DP) acdream 1028
    acdream 1032
    (BFS) acdream 1191
    (树形DP) bzoj 1060
    (状态压缩DP) poj 2978
    (DP) codeforces 358D
    (DP+二分) hdu 3433
    (最大生成树) hdu 3367
    hdoj 3501
  • 原文地址:https://www.cnblogs.com/ssj0723/p/9172533.html
Copyright © 2020-2023  润新知