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://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://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://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://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. 小結
好了,今天的練習就到這里,希望大家好好的練習和理解。
您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得點波 推薦 不要忘記哦!!!