《手把手教你》系列練習篇之2-python+ selenium自動化測試(詳細教程)


1. 簡介

  今天我們還是繼續練習練習基本功,各位小伙伴要耐住住性子,要耐得住寂寞啊,不要急躁,后面你會感謝你在前邊的不斷練習的。到后面也是檢驗你前邊的學習成果的一次很好實踐。

本文介紹如何通過link text、partial link text、class name和name 來定位頁面元素。

2.link text定位元素

我們打開網頁,一些可以點擊的鏈接跳轉上面的文字,就是link text,用百度首頁舉例來看:

在上面圖中,這一排上面的文字都是link text,例如我們要通過“新聞”這個文本字段來定義這個跳轉鏈接元素。

2.1 代碼實現:

 2.2 參考代碼:

# coding=utf-8🔥

# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

# 2.注釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2019-11-29
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自動化測試練習篇2
'''

# 3.導入模塊
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)

driver.get("https://www.baidu.com")
try:
    driver.find_element_by_link_text("新聞")
    print ('test pass: element found by link text')
except Exception as e:
    print ("Exception found", format(e))

driver.quit()

2.3運行結果

運行代碼后,控制台打印如下圖的結果

總結:凡是看到鏈接元素上面有文字描述的都可以采取find_element_by_link_text()方法來進行元素定位。這里提一下前面XPath定位中的知識,通過text()這個XPath中的函數也可以達到類似link text定位的目的。

這個“新聞”鏈接元素的XPath表達式可以這樣寫://*/div[@id='u1']/a[text()='新聞']

3. partial link text定位元素

這里我們來介紹如何通過partial link text來定位頁面元素。看到這個,有點和前一篇文字link text有點類似。字面意思,確實和link text相類似,partial link text就是選擇這個元素的link text中一部分字段。

 還是用百度首頁輸入框下有一個添加首頁“把百度設為主頁”。

3.1代碼實現

3.2參考代碼

# coding=utf-8🔥

# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

# 2.注釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2019-11-29
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自動化測試練習篇2
'''

# 3.導入模塊
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)

driver.get("https://www.baidu.com")
try:
    driver.find_element_by_partial_link_text("主頁").click()
    print ('test pass: element found by partial link text')
except Exception as e:
    print ("Exception found", format(e))

driver.quit()

3.3運行結果

運行代碼后,控制台打印如下圖的結果

為了更好的驗證是否找到了“把百度添加到首頁”這個元素,我在這個地方添加了一個click(),運行代碼,可以看到確實點擊了這個元素,代表找到了這個元素。選擇partial link text的時候,需要選擇一個比較唯一的字段,來區分這個元素。

4. class name的值來定位頁面元素

有時候,我們在用firepath(不會的請點這里)查看元素的XPath信息,發現沒有可以用來定位的id信息,這個時候我們就需要考慮用其他的可用的來定位元素。本文介紹如何通過元素節點中class name的值來定位頁面元素。還是以百度首頁,搜索輸入框定位舉例:

XPath截圖

4.1 代碼實現:

4.2 參考代碼:

# coding=utf-8🔥

# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

# 2.注釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2019-11-29
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自動化測試練習篇2
'''

# 3.導入模塊
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)

driver.get("https://www.baidu.com")
try:
    driver.find_element_by_class_name("s_ipt")
    print ('test pass: element found by class name')
except Exception as e:
    print ("Exception found", format(e))

driver.quit()

4.3 運行結果:

運行代碼后,控制台打印如下圖的結果

參考意見:很多情況下,class利用要比id多,如果class中出現了太長的字符,和可變化的數字,那么請回到用XPath定位方法。

5. name的值來定位元素

這里介紹如何通過節點中name的值來定位這個web元素。還是來看百度首頁搜索輸入框,通過name的值來定位。

5.1 代碼實現:

5.2 參考代碼:

# coding=utf-8🔥

# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

# 2.注釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2019-11-29
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自動化測試練習篇2
'''

# 3.導入模塊
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)

driver.get("https://www.baidu.com")
try:
    driver.find_element_by_name("wd") # 這里百度搜索輸入框有name = 'wd'這個節點信息
    print ('test pass: element found by name value')
except Exception as e:
    print ("Exception found", format(e))

driver.quit()

5.3 運行結果:

運行代碼后,控制台打印如下圖的結果

總結:name這個屬性不是所有的節點都有,如果有建議采用name的值來定位,就和by_id, by_class一樣的效果。

6. 小結

好了,今天的練習就到這里,希望大家好好的練習和理解。

 

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得點波 推薦 不要忘記哦!!!


免責聲明!

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



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