自動化測試只要掌握四步操做:獲取元素,操做元素,獲取返回結果,斷言(返回結果與指望結果是否一致),最後自動出測試報告。元素定位在這四個環節中是相當重要的,若是說按學習精力分配的話,元素定位佔70%;操做元素10%,獲取返回結果10%;斷言10%。若是一個頁面上的元素不能被定位到,那後面的操做就沒法繼續了。接下來就來說webdriver提供的八種基本元素定位方法。 WebDriver元素八種定位方式:
id、name、class_name、tag_name、link_text、partial_link_text、xpath、csscss
1、環境準備:web
1.瀏覽器選擇:Firefox瀏覽器
2.安裝插件:Firebug和FirePath(設置》附加組件》搜索:輸入插件名稱》下載安裝後重啓瀏覽器)工具
3.安裝完成後,頁面右上角有個小爬蟲圖標學習
4.快速查看xpath插件:XPath Checker這個可下載,也能夠不用下載測試
5.插件安裝完成後,點開附加組件》擴展,以下圖所示spa
2、查看頁面元素:插件
以百度搜索框爲例,先打開百度網頁3d
1.點右上角爬蟲按鈕blog
2.點左下角箭頭
3.講箭頭移動到百度搜索輸入框上,輸入框高亮狀態
4.下方紅色區域就是單位到輸入框的屬性:
<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd">
3、元素定位
(1)使用ID定位:driver.find_element_by_id("id值")
從上面定位到的元素屬性中,能夠看到有個id屬性:id="search-key",這裏能夠經過它的id屬性單位到這個元素。定位到搜索框後,用send_keys()方法
(2)使用name定位:driver.find_element_by_name("name值")
從上面定位到的元素屬性中,能夠看到有個name屬性:name="wd",這裏能夠經過它的name屬性單位到這個元素。
說明:這裏運行後會報錯,說明這個搜索框的name屬性不是惟一的,沒法經過name屬性直接定位到輸入框
3.使用連接的所有文字定位:driver.find_element_by_link_text("link_text值")
1.定位百度頁面上"hao123"這個按鈕
查看頁面元素:
<a class="mnav" target="_blank" href="http://www.hao123.com">hao123</a>
2.從元素屬性能夠分析出,有個href = "http://www.hao123.com
說明它是個超連接,對於這種元素,能夠用如下方法
4.使用部分連接文字定位
<a class="mnav" name="tj_lang" href="https://new.baidu.com">這是一個很長很長很長的新聞</a>
driver.find_element_by_partial_link_text("新聞")
driver.find_element_by_partial_link_text("很長很長")
1.有時候一個超連接它的字符串可能比較長,若是輸入全稱的話,會顯示很長,這時候能夠用一模糊匹配方式,截取其中一部分字符串就能夠了
2.如「hao123」,只需輸入「ao123」也能夠定位到
5.使用HTML標籤名定位:driver.find_element_by_tag_name("input")
1.從上面定位到的元素屬性中,能夠看到每一個元素都有tag(標籤)屬性,如搜索框的標籤屬性,就是最前面的input
2.很明顯,在一個頁面中,相同的標籤有不少,因此通常不用標籤來定位。如下例子,僅供參考和理解,運行確定報錯
6.使用Class名稱定位:driver.find_element_by_class_name("class值")
1.從上面定位到的元素屬性中,能夠看到有個class屬性:class="s_ipt",這裏能夠經過它的class屬性定位到這個元素。
7.使用xpath定位:driver.find_element_by_xpath("元素路徑")
1.以上定位方式都是經過元素的某個屬性來定位的,若是一個元素它既沒有id、name、class屬性也不是超連接,這麼辦呢?或者說它的屬性不少重複的。這個時候就能夠用xpath解決
2.xpath是一種路徑語言,跟上面的定位原理不太同樣,首先第一步要先學會用工具查看一個元素的xpath
3.安裝上圖的步驟,在FriePath插件裏copy對應的xpath地址
8.使用css定位:driver.find_element_by_css_selector("元素選擇器")
1.css是另一種語法,比xpath更爲簡潔,可是不太好理解。這裏先學會如何用工具查看,後續的教程再深刻講解
2.打開FirePath插件選擇css
3.定位到後以下圖紅色區域顯示
xpath與css對比