1. 程式人生 > >Python+Selenium基礎篇之5-第一個完整的自動化測試指令碼

Python+Selenium基礎篇之5-第一個完整的自動化測試指令碼

前面文章,我們介紹瞭如何採用XPath表示式去定位網頁元素,在掌握瞭如何抓取或者如何書寫精確的XPath表示式後,我們可以開始寫自己的第一個真正意義上的webui 自動化測試指令碼,就相當於,你在學習Python,如何在控制檯列印Hello,Python! 一樣。

      我們的測試用例是:開啟百度首頁,搜尋Selenium,然後檢查搜尋列表,有沒有Selenium這個官網連結選項。

      在寫自動化指令碼之前,需要明確手動指令碼的步驟,然後去拆分到具體沒一個步驟做什麼,考慮好了之後,才開始動手去寫指令碼。我把這個測試場景分拆如下步驟:

1) 啟動後瀏覽器,這裡我們用Chrome

2) 開啟百度首頁,https://www.baidu.com

3) 定位搜尋輸入框,記錄下輸入框元素的xpath表示式://*[@id='kw']

4) 定位搜尋提交按鈕(百度一下這個按鈕),獲取xpath表示式://*[@id='su']

5) 在搜尋輸入框輸入“Selenium”,點選百度一下這個按鈕。

6) 在搜尋結果列表去判斷是否存在Selenium官網這個連結。

7) 退出瀏覽器,結束測試。

 

如果,還不會通過火狐瀏覽器上外掛firepath獲取元素的表示式,請看上一篇文章。如果你沒有安裝Chrome,那就用Firefox。

1) 桌面新建一個記事本,命名並儲存為FirstScript.py

2) 輸入如下程式碼片段到FirstScript.py,儲存

3) 開啟cmd視窗,切換到桌面路徑下,然後通過python FirstScript.py 來執行指令碼。

 

FirstScript.py指令碼如下

# coding=utf-8
import time
from selenium import webdriver

driver = webdriver.Chrome() # 開啟chrome,如果沒有安裝chrome,換成webdriver.Firefox()
driver.maximize_window() # 最大化瀏覽器視窗
driver.implicitly_wait(8) # 設定隱式時間等待

driver.get("https://www.baidu.com") # 位址列輸入百度地址
driver.find_element_by_xpath("//*[@id='kw']").send_keys("selenium") # 搜尋輸入框輸入Selenium
driver.find_element_by_xpath("//*[@id='su']").click() #點選百度一下按鈕

# 匯入time模組,等待2秒

time.sleep(2)
# 這裡通過元素XPath表示式來確定該元素顯示在結果列表,從而判斷Selenium官網這個連結顯示在結果列表。
# 這裡採用了相對元素定位方法/../
# 通過selenium方法is_displayed() 來判斷我們的目標元素是否在頁面顯示。
driver.find_element_by_xpath("//div/h3/a[text()='官網']/../a/em[text()='Selenium']").is_displayed()
driver.quit()


第二種斷言寫法:


# coding=utf-8
import time
from selenium import webdriver

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

driver.get("https://www.baidu.com")
driver.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
driver.find_element_by_xpath("//*[@id='su']").click()

time.sleep(2)
# 第二個判斷方法
ele_string = driver.find_element_by_xpath("//div/h3/a[text()='官網']/../a").text
if (ele_string == u"Selenium - Web Browser Automation"):
print "測試成功,結果和預期結果匹配!"
driver.quit()
      這裡只利用 兩個等號(==)來判斷兩個字串是否完全相同,有時候我們還需要對得到的字串進行切割操作,才能進行去匹配,以後再介紹字串切割處理在自動化測試結果判斷中的使用。

總結:自動化測試最難的在於如何去寫斷言,如何判斷測試結果是否通過。

     建議: 以上程式碼包括以後文章中指令碼舉例,你還是最好去一行一行抄寫,不要直接複製、黏貼到你記事本中。因為,你在書寫指令碼過程,肯定會犯一些語法和輸入錯誤,在除錯指令碼過程,通過觀察報錯資訊,直到你解決問題,可以順利執行指令碼,你會得到和收穫很多。