前面文章,我們介紹了如何採用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) 退出瀏覽器,結束測試。
如果,還不會通過Firefox瀏覽器上外掛程式firepath擷取元素的運算式,請看上一篇文章。如果你沒有安裝Chrome,那就用Firefox。
1) 案頭建立一個記事本,命名並儲存為FirstScript.py
2) 輸入如下程式碼片段到FirstScript.py,儲存
3) 開啟cmd視窗,切換到案頭路徑下,然後通過python FirstScript.py 來執行指令碼。
FirstScript.py指令碼如下
# coding=utf-8import timefrom selenium import webdriverdriver = 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") # 搜尋輸入框輸入Seleniumdriver.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-8import timefrom selenium import webdriverdriver = 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").textif (ele_string == u"Selenium - Web Browser Automation"): print "測試成功,結果和預期結果匹配。"driver.quit()
這裡只利用 兩個等號(==)來判斷兩個字串是否完全相同,有時候我們還需要對得到的字串進行切割操作,才能進行去匹配,以後再介紹字串切割處理在自動化測試結果判斷中的使用。
總結:自動化測試最難的在於如何去寫斷言,如何判斷測試結果是否通過。
建議: 以上程式碼封裝括以後文章中指令碼舉例,你還是最好去一行一行抄寫,不要直接複製、黏貼到你記事本中。因為,你在書寫指令碼過程,肯定會犯一些文法和輸入錯誤,在調試指令碼過程,通過觀察報錯資訊,直到你解決問題,可以順利執行指令碼,你會得到和收穫很多。