🔥《手把手教你》系列練習篇之 6-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://image.baidu.com/search/down?url=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://image.baidu.com/search/down?url=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://image.baidu.com/search/down?url=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://image.baidu.com/search/down?url=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. 小結
好了,今天的練習就到這裡,希望大家好好的練習和理解。
相關文章
- 🔥《手把手教你》系列練習篇之 7-python+ selenium 自動化測試(詳細教程)Python
- 🔥《手把手教你》系列練習篇之 5-python+ selenium 自動化測試(詳細教程)Python
- 🔥《手把手教你》系列基礎篇之 4-python+ selenium 自動化測試-xpath 使用(詳細教程)Python
- 🔥《手把手教你》系列基礎篇之 1-python+ selenium 自動化測試 - 環境搭建(詳細)Python
- 《手把手教你》系列技巧篇(八)-java+ selenium自動化測試-元素定位大法之By id(詳細教程)Java
- 《手把手教你》系列技巧篇(九)-java+ selenium自動化測試-元素定位大法之By name(詳細教程)Java
- 🔥《手把手教你》系列基礎篇之 3-python+ selenium 自動化測試 - 驅動瀏覽器和元素定位大法(詳細)Python瀏覽器
- 🔥《手把手教你》系列基礎篇之 2-python+ selenium 自動化測試 - 開啟和關閉瀏覽器(詳細)Python瀏覽器
- 《手把手教你》系列技巧篇(十)-java+ selenium自動化測試-元素定位大法之By class name(詳細教程)Java
- 《手把手教你》系列技巧篇(十一)-java+ selenium自動化測試-元素定位大法之By tag name(詳細教程)Java
- 《手把手教你》系列基礎篇之(一)-java+ selenium自動化測試-環境搭建(上)(詳細教程)Java
- 《手把手教你》系列技巧篇(十九)-java+ selenium自動化測試-元素定位大法之By css下卷(詳細教程)JavaCSS
- 《手把手教你》系列技巧篇(十三)-java+ selenium自動化測試-元素定位大法之By partial link text(詳細教程)Java
- 《手把手教你》系列技巧篇(十八)-java+ selenium自動化測試-元素定位大法之By css中卷(詳細教程)JavaCSS
- 《手把手教你》系列技巧篇(十五)-java+ selenium自動化測試-元素定位大法之By xpath中卷(詳細教程)Java
- 《手把手教你》系列基礎篇(五)-java+ selenium自動化測試- 建立首個自動化指令碼(詳細教程)Java指令碼
- 《手把手教你》系列技巧篇(五十五)-java+ selenium自動化測試-上傳檔案-下篇(詳細教程)Java
- 《手把手教你》系列技巧篇(五十七)-java+ selenium自動化測試-下載檔案-下篇(詳細教程)Java
- 《手把手教你》系列基礎篇之(三)-java+ selenium自動化測試- 啟動三大瀏覽器(上)(詳細教程)Java瀏覽器
- 《手把手教你》系列基礎篇之(二)-java+ selenium自動化測試-環境搭建(下)基於Maven(詳細教程)JavaMaven
- 《手把手教你》系列技巧篇(六十九)-java+ selenium自動化測試 - 讀取csv檔案(詳細教程)Java
- 《手把手教你》系列技巧篇(五十一)-java+ selenium自動化測試-字串操作-下篇(詳解教程)Java字串
- 《手把手教你》系列基礎篇之(四)-java+ selenium自動化測試- 啟動三大瀏覽器(下)基於Maven(詳細教程)Java瀏覽器Maven
- 《手把手教你》系列技巧篇(三十)-java+ selenium自動化測試- Actions的相關操作下篇(詳解教程)Java
- 《手把手教你》系列技巧篇(二十一)-java+ selenium自動化測試-瀏覽器視窗的控制程式碼(詳細教程)Java瀏覽器
- 《手把手教你》系列技巧篇(三十一)-java+ selenium自動化測試- Actions的相關操作-番外篇(詳解教程)Java
- 《手把手教你》系列技巧篇(四十七)-java+ selenium自動化測試-判斷元素是否顯示(詳解教程)Java
- 《手把手教你》系列技巧篇(三十七)-java+ selenium自動化測試-日曆時間控制元件-上篇(詳解教程)Java控制元件
- 《手把手教你》系列技巧篇(四十五)-java+ selenium自動化測試-web頁面定位toast-上篇(詳解教程)JavaWebAST
- 《手把手教你》系列技巧篇(四十六)-java+ selenium自動化測試-web頁面定位toast-下篇(詳解教程)JavaWebAST
- 《手把手教你》系列基礎篇(七十八)-java+ selenium自動化測試-框架設計基礎-TestNG依賴測試- 中篇(詳解教程)Java框架
- 《手把手教你》系列技巧篇(二十三)-java+ selenium自動化測試-webdriver處理瀏覽器多視窗切換下卷(詳細教程)JavaWeb瀏覽器
- 《手把手教你》系列技巧篇(三十五)-java+ selenium自動化測試-單選和多選按鈕操作-下篇(詳解教程)Java
- 《手把手教你》系列技巧篇(三十三)-java+ selenium自動化測試-單選和多選按鈕操作-上篇(詳解教程)Java
- 《手把手教你》系列技巧篇(四十四)-java+ selenium自動化測試-處理https 安全問題或者非信任站點-下篇(詳解教程)JavaHTTP
- 自動化測試之Selenium篇(一):環境搭建
- Selenium用法詳解 - - selenium自動化測試概要
- 《手把手教你》系列基礎篇(九十一)-java+ selenium自動化測試-框架設計基礎-Logback實現日誌輸出-下篇(詳解教程)Java框架