今天咱們仍是繼續練習練習基本功,各位小夥伴要耐住住性子,要耐得住寂寞啊,不要急躁,後面你會感謝你在前邊的不斷練習的。到後面也是檢驗你前邊的學習成果的一次很好實踐。html
本文介紹如何經過link text、partial link text、class name和name 來定位頁面元素。python
咱們打開網頁,一些能夠點擊的連接跳轉上面的文字,就是link text,用百度首頁舉例來看:web
在上面圖中,這一排上面的文字都是link text,例如咱們要經過「新聞」這個文本字段來定義這個跳轉連接元素。函數
# coding=utf-8🔥 # 1.先設置編碼,utf-8可支持中英文,如上,通常放在第一行 # 2.註釋:包括記錄建立時間,建立人,項目名稱。 ''' Created on 2019-11-29 @author: 北京-宏哥 QQ交流羣:705269076 Project: python+ selenium自動化測試練習篇2 ''' # 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_link_text("新聞") print ('test pass: element found by link text') except Exception as e: print ("Exception found", format(e)) driver.quit()
運行代碼後,控制檯打印以下圖的結果學習
總結:凡是看到連接元素上面有文字描述的均可以採起find_element_by_link_text()方法來進行元素定位。這裏提一下前面XPath定位中的知識,經過text()這個XPath中的函數也能夠達到相似link text定位的目的。測試
這個「新聞」連接元素的XPath表達式能夠這樣寫://*/div[@id='u1']/a[text()='新聞']ui
這裏咱們來介紹如何經過partial link text來定位頁面元素。看到這個,有點和前一篇文字link text有點相似。字面意思,確實和link text相相似,partial link text就是選擇這個元素的link text中一部分字段。編碼
仍是用百度首頁輸入框下有一個添加首頁「把百度設爲主頁」。spa
# coding=utf-8🔥 # 1.先設置編碼,utf-8可支持中英文,如上,通常放在第一行 # 2.註釋:包括記錄建立時間,建立人,項目名稱。 ''' Created on 2019-11-29 @author: 北京-宏哥 QQ交流羣:705269076 Project: python+ selenium自動化測試練習篇2 ''' # 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_partial_link_text("主頁").click() print ('test pass: element found by partial link text') except Exception as e: print ("Exception found", format(e)) driver.quit()
運行代碼後,控制檯打印以下圖的結果code
爲了更好的驗證是否找到了「把百度添加到首頁」這個元素,我在這個地方添加了一個click(),運行代碼,能夠看到確實點擊了這個元素,表明找到了這個元素。選擇partial link text的時候,須要選擇一個比較惟一的字段,來區分這個元素。
有時候,咱們在用firepath(不會的請點這裏)查看元素的XPath信息,發現沒有能夠用來定位的id信息,這個時候咱們就須要考慮用其餘的可用的來定位元素。本文介紹如何經過元素節點中class name的值來定位頁面元素。仍是以百度首頁,搜索輸入框定位舉例:
XPath截圖
# coding=utf-8🔥 # 1.先設置編碼,utf-8可支持中英文,如上,通常放在第一行 # 2.註釋:包括記錄建立時間,建立人,項目名稱。 ''' Created on 2019-11-29 @author: 北京-宏哥 QQ交流羣:705269076 Project: python+ selenium自動化測試練習篇2 ''' # 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_class_name("s_ipt") print ('test pass: element found by class name') except Exception as e: print ("Exception found", format(e)) driver.quit()
運行代碼後,控制檯打印以下圖的結果
參考意見:不少狀況下,class利用要比id多,若是class中出現了太長的字符,和可變化的數字,那麼請回到用XPath定位方法。
這裏介紹如何經過節點中name的值來定位這個web元素。仍是來看百度首頁搜索輸入框,經過name的值來定位。
# coding=utf-8🔥 # 1.先設置編碼,utf-8可支持中英文,如上,通常放在第一行 # 2.註釋:包括記錄建立時間,建立人,項目名稱。 ''' Created on 2019-11-29 @author: 北京-宏哥 QQ交流羣:705269076 Project: python+ selenium自動化測試練習篇2 ''' # 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_name("wd") # 這裏百度搜索輸入框有name = 'wd'這個節點信息 print ('test pass: element found by name value') except Exception as e: print ("Exception found", format(e)) driver.quit()
運行代碼後,控制檯打印以下圖的結果
總結:name這個屬性不是全部的節點都有,若是有建議採用name的值來定位,就和by_id, by_class同樣的效果。
好了,今天的練習就到這裏,但願你們好好的練習和理解。
您的確定就是我進步的動力。若是你感受還不錯,就請鼓勵一下吧!記得點波 推薦 不要忘記哦!!!