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

北京-宏哥發表於2024-11-25

1. 簡介

  前面介紹了,XPath, id , class , link text, partial link text, tag name, name 七大元素定位方法,本文介紹 webdriver 支援的最後一個方法:by_css。css 和 XPath 類似,也需要掌握一些語法,才能寫出正確的,完整的 css 選擇表示式。相關 w3c 介紹,請點選這裡。

2. by_css 定位元素

  以百度首頁的 “百度一下” 按鈕為例,我們透過 by_css 來定位到這個按鈕。如圖

2.1 程式碼實現:

2.2 參考程式碼:

# coding=utf-8🔥

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

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

# 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_css_selector("#su") # 找 百度一下 這個按鈕
    print ('test pass: element found by css selector')
except Exception as e:
    print ("Exception found", format(e))

driver.quit()

2.3 執行結果:

  執行程式碼後,控制檯列印如下圖的結果

  總結 :如果一開始沒有接觸 css,感覺寫 css 表示式有點困難,沒關係。看個人喜好和適合哪個,例如,如果你掌握好了 XPath 的寫法,那麼就可以不去管 css,畢竟大部分 xpath 表示式都能夠定位到元素。有些人可能說了,css 要比 xpath 表示式查詢元素的速度要

快,這個你不要去擔心,對計算機來講,你根本無法區分哪個更快,也不是自動化測試考慮的重點。

建議:一定要掌握好 XPath 或者 css 來定位元素,其他的幾種瞭解就可以。畢竟在實際專案開發指令碼階段,很多元素是無法透過 id ,css, text, name 來直接定位這個網頁元素,更多的還是根據 XPath 或者 css 表示式去定位。

3. 清除文字方法

  在前面的文章中,我們或多或少的用到了輸入字元和點選按鈕這樣的操作。用 send_keys() 來輸入字串到文字輸入框這樣的頁面元素,用 click() 來點選頁面上支援點選的元素。有時候,我們需要清除一個文字輸入框內的文字,然後重新輸入新的字串,那邊清

除這個方法如何實現呢。

呼叫 webdriever 中 clear() 方法:

相關程式碼如下,為了演示測試效果,我們執行完指令碼,不關閉瀏覽器:

3.1 程式碼實現:

3.2 參考程式碼:

# coding=utf-8🔥

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

# 2.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on 2019-12-02
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自動化測試練習篇3
'''

# 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")

driver.find_element_by_id("kw").send_keys("Selenium")
try:
    driver.find_element_by_id("kw").clear() # 呼叫clear()方法去清除
    print ('test pass: clean successful')
except Exception as e:
    print ("Exception found", format(e))

3.3 執行結果:

  執行程式碼後,控制檯列印如下圖的結果

4. 呼叫 webdriver 中重新整理頁面的方法

本小節宏哥給小夥伴們或者童鞋們來介紹如何呼叫 webdriver 中重新整理頁面的方法。其實前邊已經說過,這個只不過是作為練習我們再來鞏固一下而已。

相關指令碼程式碼如下:

4.1 程式碼實現:

4.2 參考程式碼:

# coding=utf-8🔥

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

# 2.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on 2019-12-02
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自動化測試練習篇3
'''

# 3.匯入模組
import time
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")
time.sleep(2)
try:
    driver.refresh() # 重新整理方法 refresh
    print ('test pass: refresh successful')
except Exception as e:
    print ("Exception found", format(e))
driver.quit()

4.3 執行結果:

  執行程式碼後,控制檯列印如下圖的結果

5. 瀏覽器前進後退

  本小節來介紹上如何,利用 webdriver 中的方法來演示瀏覽器中位址列旁邊的前進和後退功能。其實這個前邊也已經說過,這個只不過是作為練習我們再來鞏固一下而已。

相關指令碼程式碼如下:

5.1 程式碼實現:

5.2 參考程式碼:

# coding=utf-8🔥

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

# 2.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on 2019-12-02
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自動化測試練習篇3
'''

# 3.匯入模組
import time
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")
time.sleep(2)
elem_news = driver.find_element_by_link_text("新聞")
elem_news.click() # 點選進入到百度新聞
time.sleep(2)
driver.back() # 從百度新聞後退到百度首頁
print("從百度新聞後退到百度首頁")
time.sleep(2)
driver.forward() # 百度首頁前進到百度新聞
print("百度首頁前進到百度新聞")
time.sleep(2)
driver.quit()

5.3 執行結果:

  執行程式碼後,控制檯列印如下圖的結果

6. webdriver 方法獲取瀏覽器的版本號

  本小節介紹,如何透過 webdriver 方法獲取瀏覽器的版本號。看起來這個功能很雞肋,不管怎麼說,還是學習下,特別是在傳送自動化測試報告的時候,還是可以透過這個方法來告訴別人,執行過的指令碼是透過什麼瀏覽器,什麼版本跑的吧。

相關指令碼程式碼如下:

6.1 程式碼實現:

6.2 參考程式碼:

# coding=utf-8🔥

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

# 2.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on 2019-12-02
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自動化測試練習篇3
'''

# 3.匯入模組
import time
from selenium import webdriver


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

driver.get("http://www.baidu.com/")
time.sleep(1)
print(driver.capabilities['version']) # 列印瀏覽器version的值
driver.quit()

6.3 執行結果:

  執行程式碼後,控制檯列印如下圖的結果

6.4 檢視瀏覽器版本

  右上角——>幫助——>關於 Google Chrome,點選後如下圖:檢視版本號一致。

7. 小結

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

相關文章