1. 程式人生 > >selenium之表格的定位

selenium之表格的定位

真的勇士, 敢於直面慘淡的warning、 敢於正視淋漓的error

目錄

  • 被測試網頁的HTML程式碼
  • 1.遍歷表格所有單元格
  • 2.定位表格中的某個元素
  • 3.定位表格中的子元素
  • 總結

瀏覽器網頁常常會包含各類表格,自動化測試工程師可能會經常操作表格中的行,列以及某些特定的單元格,因此熟練掌握表格的定位方法是自動化測試實施過程中必要的技能。

被測試網頁的HTML程式碼

被測試網頁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>

1.遍歷表格所有單元格

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')

以上步驟完成表格中所有單元格的遍歷輸出,通過遍歷可以實現讀取任意單元格內容的操作。

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

目的:

定位表格中第二行第二列單元格

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)')

如果對軟體測試、介面測試、自動化測試、效能測試、LR指令碼開發、面試經驗交流。感興趣可以175317069,群內會有不定期的發放免費的資料連結,這些資料都是從各個技術網站蒐集、整理出來的,如果你有好的學習資料可以私聊發我,我會註明出處之後分享給大家。

3.定位表格中的子元素

被測試網頁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>

目的:

在被測網頁中,定位表格中第三行中的第一個“面霜”文字前的複選框。

//td[contains(.,'化妝品')]/input[1]

python定位語句:

element = driver.find_element_by_xpath('//td[contains(.,'化妝品')]/input[1]')

程式碼解釋:

先找到包含元素的單元格,在此單元格中再尋找子元素即可。表示式//td[contains(.,'化妝品')]表示模糊匹配文字內容包含“化妝”關鍵字的單元格td元素,//input[1]表示定位td下的第一個input子元素。

總結

這篇隨筆寫的很簡單,實際工作中的表定位可能也會有各種各樣的情況,但是這篇隨筆確實基礎,希望大家多練習吧。如果文章中有什麼錯誤或者建議,評論給我,謝謝!