今天咱們繼續前邊的練習,學習和練習一下:如何使用webdriver方法獲取當前測試頁面的URL、如何獲取當前頁面的title、如何打開瀏覽器的一個新建頁面、如何操做單選按鈕等等,這些小練習,來鞏固基礎。html
本小節介紹如何經過webdriver方法獲取當前測試頁面的URL。獲取當前URL有什麼用處呢,通常URL能夠幫助咱們判斷跳轉的頁面是否正確,或者URL中部分字段能夠做爲咱們自動化測試腳本期待結果的一部分。由於這裏做爲練習宏哥在這裏提一下,爲的是就python
是小夥伴或者童鞋們有個印象,在用到的時候知道怎麼用便可。git
相關腳本代碼以下:github
# 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()
運行代碼後,控制檯打印以下圖的結果web
本小節介紹瞭如何獲取當前頁面的URL的值,本文介紹如何獲取當前頁面的title,這個也能夠做爲測試結果的依據,經過獲得的title和預期的值對比,能夠支持咱們判斷頁面跳轉正確。瀏覽器
相關腳本代碼以下:ide
# 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()
運行代碼後,控制檯打印以下圖的結果學習
本小節介紹如selenium方法打開一個新的tab,咱們知道在瀏覽器裏,咱們按住 ctrl+ t 就能夠新打開一個tab。因此咱們學習如何利用webdriver中send_key 的方法去觸發ctrl+t的效果。咱們利用火狐瀏覽器來演示。測試
相關代碼以下:ui
主要是調用了keys模塊下相關方法,能夠經過這個方法,輸入任何一個鍵盤上支持的字符或者快捷鍵。
# 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)
運行代碼後,控制檯打印以下圖的結果
爲了看得清楚,咱們把退出瀏覽器的代碼去掉,能夠清楚的看到打開了一個新的窗口,以下圖:
本小節介紹如何利用selenium中的方法去操做單選按鈕(Radio Button)。
利用百度搜索設置頁面兩個單選按鈕舉例
默認是選擇新聞全文,我試試在二者以前來回點擊。
實際上,勾選一個單選按鈕,也就是調用元素方法click()
咱們利用for語句遍歷這兩個單選按鈕,依次點擊他們。
相關腳本代碼以下:
# 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()
運行代碼後,控制檯打印以下圖的結果
注意:
1. 這裏咱們第一次用到了find_elements,也就是找一組元素,返回的是一個列表
2. 循環這個列表,點擊全部的單選按鈕,這裏應該只有2個符合上面XPath定位方法的單選按鈕
小結這部分今天主要是總結宏哥在練習過程當中遇到的各類奇葩錯誤和解決辦法。
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
去下載一個driver插件geckodriver.exe, 下載地址:https://github.com/mozilla/geckodriver/releases,下載好這個exe文件後,把這個文件放到你的python安裝目錄下,例如宏哥放的位置以下圖:
這個有的人認爲是瀏覽器和瀏覽器驅動的版本不匹配也會報這個錯誤。
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
查看selenium的版本號,下載能夠兼容selenium的瀏覽器驅動便可;
查看瀏覽器的版本號,下載能夠匹配的瀏覽器驅動便可,通常瀏覽器的驅動都會標明對應的瀏覽器版本號或者瀏覽器版本號的範圍。
上邊兩個報錯修改之後仍然報錯。
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)
好了,今天的練習就到這裏,但願你們好好的練習和理解。 可是今天火狐瀏覽器這塊可能遇到的坑比較多,能夠很好地鍛鍊一下本身哦!!!
您的確定就是我進步的動力。若是你感受還不錯,就請鼓勵一下吧!記得點波 推薦 不要忘記哦!!!
原文出處:https://www.cnblogs.com/du-hong/p/11956061.html