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


1.  簡介

  今天我們繼續前邊的練習,學習和練習一下:如何使用webdriver方法獲取當前測試頁面的URL、如何獲取當前頁面的title、如何打開瀏覽器的一個新建頁面、如何操作單選按鈕等等,這些小練習,來鞏固基礎。

2. webdriver方法獲取當前測試頁面的URL

  本小節介紹如何通過webdriver方法獲取當前測試頁面的URL。獲取當前URL有什么用處呢,一般URL可以幫助我們判斷跳轉的頁面是否正確,或者URL中部分字段可以作為我們自動化測試腳本期待結果的一部分。因為這里作為練習宏哥在這里提一下,為的是就

是小伙伴或者童鞋們有個印象,在用到的時候知道怎么用即可。

相關腳本代碼如下:

2.1 代碼實現:

2.2 參考代碼:

# coding=utf-8🔥

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

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

# 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)
driver.find_element_by_link_text("新聞").click()
time.sleep(1)
print (driver.current_url) # current_url 方法可以得到當前頁面的URL
driver.quit()

2.3 運行結果:

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

3. 獲取當前頁面的title

  本小節介紹了如何獲取當前頁面的URL的值,本文介紹如何獲取當前頁面的title,這個也可以作為測試結果的依據,通過得到的title和預期的值對比,可以支持我們判斷頁面跳轉正確。

相關腳本代碼如下:

3.1 代碼實現:

3.2 參考代碼:

# coding=utf-8🔥

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

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

# 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)
driver.find_element_by_link_text("新聞").click()
time.sleep(1)
print (driver.title) # title方法可以獲取當前頁面的標題顯示的字段
driver.quit()

3.3 運行結果:

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

4. selenium方法打開一個新的tab

  本小節介紹如selenium方法打開一個新的tab,我們知道在瀏覽器里,我們按住 ctrl+ t 就可以新打開一個tab。所以我們學習如何利用webdriver中send_key 的方法去觸發ctrl+t的效果。我們利用火狐瀏覽器來演示。

相關代碼如下:

主要是調用了keys模塊下相關方法,可以通過這個方法,輸入任何一個鍵盤上支持的字符或者快捷鍵。

4.1 代碼實現:

 

4.2 參考代碼:

# coding=utf-8🔥

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

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

# 3.導入模塊
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys


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

driver.get("http://www.baidu.com/")
time.sleep(1)
ele = driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't') # 觸發ctrl + t
time.sleep(1)

4.3 運行結果:

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

4.4 查看瀏覽器

為了看得清楚,我們把退出瀏覽器的代碼去掉,可以清楚的看到打開了一個新的窗口,如下圖:

5. selenium中的方法去操作單選按鈕

  本小節介紹如何利用selenium中的方法去操作單選按鈕(Radio Button)。

利用百度搜索設置頁面兩個單選按鈕舉例

默認是選擇新聞全文,我試試在兩者之前來回點擊。

實際上,勾選一個單選按鈕,也就是調用元素方法click()

我們利用for語句遍歷這兩個單選按鈕,依次點擊他們。

相關腳本代碼如下:

5.1 代碼實現:

5.2 參考代碼:

# coding=utf-8🔥

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

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

# 3.導入模塊
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.implicitly_wait(8)

for i in driver.find_elements_by_xpath(".//*[@id='se-settting-1']/input[@type='radio']"):
    i.click()

5.3 運行結果:

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

注意:

1. 這里我們第一次用到了find_elements,也就是找一組元素,返回的是一個列表

2. 循環這個列表,點擊所有的單選按鈕,這里應該只有2個符合上面XPath定位方法的單選按鈕

6. 小結

  小結這部分今天主要是總結宏哥在練習過程中遇到的各種奇葩錯誤和解決辦法。

6.1 沒有瀏覽器驅動報錯

6.1.1 報錯關鍵字段如下:
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

6.1.2 解決辦法:

去下載一個driver插件geckodriver.exe, 下載地址:https://github.com/mozilla/geckodriver/releases,下載好這個exe文件后,把這個文件放到你的python安裝目錄下,例如宏哥放的位置如下圖:

6.2 geckodriver和selenium版本不兼容報錯

這個有的人認為是瀏覽器和瀏覽器驅動的版本不匹配也會報這個錯誤。

6.2.1 報錯關鍵字段如下:
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities

 6.2.2. 解決辦法:

查看selenium的版本號,下載可以兼容selenium的瀏覽器驅動即可;

查看瀏覽器的版本號,下載可以匹配的瀏覽器驅動即可,一般瀏覽器的驅動都會標明對應的瀏覽器版本號或者瀏覽器版本號的范圍。

6.3  依舊報錯

上邊兩個報錯修改以后仍然報錯。

6.3.1 報錯關鍵字段
selenium.common.exceptions.WebDriverException: Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line

6.3.2 解決辦法:

 原因是:未找到瀏覽器的位置,宏哥這里提供解決辦法有兩種,僅供參考!!!

方法一:配置火狐瀏覽器的環境變量,這個宏哥在這里就不做贅述了,還是用老辦法即可,看過宏哥的文章,應該知道老辦法是什么,記住是老辦法,不是老地方啊!!!

方法二:代碼實現指引瀏覽器的位置

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('D:\\software\\Firefox\\firefox.exe')

driver = webdriver.Firefox(firefox_binary = binary)

好了,今天的練習就到這里,希望大家好好的練習和理解。 但是今天火狐瀏覽器這塊可能遇到的坑比較多,可以很好地鍛煉一下自己哦!!!

 

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


免責聲明!

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



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