頁面元素定位方法---表格定位


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 + "\t",
    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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM