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

  • 2019 年 12 月 10 日
  • 筆記

1. 簡介

  前面文章我們了解了如何獲取元素的text屬性值,和判斷元素是否顯示在頁面(is_displayed()方法),本文我們來學習下,判斷一個控制項是否被選中狀態、獲取頁面元素的大小、組合鍵-全選文字、組合鍵-退格鍵刪除文本和滑鼠右鍵等練習的內容。

2. 驗證控制項是否被選中

還是以百度首頁點擊登錄後,進入登錄介面的「下次自動登錄」舉例:

由於這個"下次自動登錄"是默認被選中狀態,我們需要用腳本去判斷是否被選中。

相關程式碼如下:

2.1 程式碼實現:

2.2 參考程式碼:

# coding=utf-8?    # 1.先設置編碼,utf-8可支援中英文,如上,一般放在第一行    # 2.注釋:包括記錄創建時間,創建人,項目名稱。  '''  Created on 2019-12-05  @author: 北京-宏哥   QQ交流群:705269076  Project: python+ selenium自動化測試練習篇6  '''    # 3.導入模組  import time  from selenium import webdriver    driver = webdriver.Chrome()  driver.maximize_window()  driver.get('https://www.baidu.com')  driver.implicitly_wait(8)    driver.find_element_by_xpath("//*[@id='u1']/a[7]").click()  time.sleep(1)  driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__footerULoginBtn']").click()  time.sleep(1)  try:      driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__memberPass']").is_selected()      print("Test Pass.")  except Exception as e:      print('Test fail', format(e))

2.3 運行結果:

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

總結:

元素方法is_selected()返回是是布爾值,用來判斷單選或者多選控制項是否被選中,或者下拉選擇菜單是否選擇一個默認的option,都可以通過這個方法去判斷。

3. 獲取頁面元素大小

本文介紹如何通過Selenium方法去獲取頁面元素的大小。這個場景是可能在需要測試的,例如在前端測試過程中,需要去測試某一個控制項是否和設計大小保持一致。

這裡用百度首頁的「百度一下」這個按鈕舉例,列印出這個按鈕的大小。

相關腳本程式碼如下:

3.1 程式碼實現:

3.2 參考程式碼:

# coding=utf-8?    # 1.先設置編碼,utf-8可支援中英文,如上,一般放在第一行    # 2.注釋:包括記錄創建時間,創建人,項目名稱。  '''  Created on 2019-12-05  @author: 北京-宏哥   QQ交流群:705269076  Project: python+ selenium自動化測試練習篇5  '''    # 3.導入模組  import time  from selenium import webdriver    driver = webdriver.Chrome()  driver.maximize_window()  driver.implicitly_wait(6)  driver.get("https://www.baidu.com/")  time.sleep(1)  search_btn = driver.find_element_by_id('su')  print (search_btn.size)

3.3 運行結果:

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

4. 組合鍵-全選文字

本文開始介紹Selenium中Keys模組下的一些組合,或快捷鍵的使用。前面的一篇文章,介紹了如何新開一個tab,也是用到這塊的知識。

本文介紹全選當前頁面文字,快捷鍵是 Ctrl+a,主要還是用send_keys()方法輸入組合鍵,這裡用百度首頁舉例。

相關腳本程式碼如下:

4.1 程式碼實現:

4.2 參考程式碼:

# coding=utf-8?    # 1.先設置編碼,utf-8可支援中英文,如上,一般放在第一行    # 2.注釋:包括記錄創建時間,創建人,項目名稱。  '''  Created on 2019-12-05  @author: 北京-宏哥   QQ交流群:705269076  Project: python+ selenium自動化測試練習篇5  '''    # 3.導入模組  import time  from selenium import webdriver  from selenium.webdriver.common.keys import Keys      driver = webdriver.Chrome()  driver.maximize_window()  driver.get('https://www.baidu.com')    element = driver.find_element_by_tag_name('body')  element.send_keys(Keys.CONTROL + 'a')

4.3 運行結果:

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

4.4 百度首頁如下:

百度首頁相當於我們按了鍵盤的組合鍵(Ctrl + A)

5. 組合鍵-退格鍵刪除文字

前面一篇文章介紹了,常規清除文本輸入框字元的方法clear(), 本文介紹

相關腳本程式碼如下,這裡用百度首頁搜索輸入框舉例:

5.1 程式碼實現:

5.2 參考程式碼:

# coding=utf-8?    # 1.先設置編碼,utf-8可支援中英文,如上,一般放在第一行    # 2.注釋:包括記錄創建時間,創建人,項目名稱。  '''  Created on 2019-12-05  @author: 北京-宏哥   QQ交流群:705269076  Project: python+ selenium自動化測試練習篇5  '''    # 3.導入模組  import time  from selenium import webdriver  from selenium.webdriver.common.keys import Keys      driver = webdriver.Chrome()  driver.maximize_window()  driver.get('https://www.baidu.com')    element = driver.find_element_by_id('kw')  element.send_keys("Selenium automation")  time.sleep(1)  element.send_keys(Keys.CONTROL+'a')  element.send_keys(Keys.BACKSPACE)

5.3 運行結果:

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

6. 滑鼠右鍵

本文介紹如何使用Selenium中右鍵方法來操作網頁元素。網頁上有些元素是支援右鍵來觸發新的菜單,這裡找一個百度首頁,百度logo的右鍵,查看圖片動作來模擬這個場景。

問題拆分:

1. 打開百度首頁,找到logo,右鍵滑鼠

2. 移動到菜單,查看影像,然後點擊

核心問題,如何右鍵操作,然後是如何選擇查看影像這個菜單。在Selenium中,有一個ActionChains模組支援,右鍵,滑鼠懸停,拖拽,雙擊等動作。我們可以通過鍵盤向下箭頭來選擇查看影像這個菜單,然後點擊就可以達到目的。

相關腳本程式碼如下:

6.1 程式碼實現:

6.2 參考程式碼:

# coding=utf-8?    # 1.先設置編碼,utf-8可支援中英文,如上,一般放在第一行    # 2.注釋:包括記錄創建時間,創建人,項目名稱。  '''  Created on 2019-12-05  @author: 北京-宏哥   QQ交流群:705269076  Project: python+ selenium自動化測試練習篇5  '''    # 3.導入模組  import time  from selenium import webdriver  from selenium.webdriver import ActionChains  from selenium.webdriver.common.keys import Keys      driver = webdriver.Chrome()  driver.maximize_window()  driver.get('https://www.baidu.com')  time.sleep(2)    element = driver.find_element_by_xpath("//*[@id='lg']/img")  actionChains = ActionChains(driver)  actionChains.context_click(element).send_keys(Keys.ARROW_DOWN).send_keys(Keys.ENTER).perform()  #actionChains.context_click(element).send_keys('i').perform()

6.3 運行結果:

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

注意: ActionChains下相關方法在當前的firefox不工作,這個是一個已知的bug。

7. 小結

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