元素定位是 WebDriver 很重要的部分,特別對於自動化測試來說。
要想操作元素,首先必須要找到元素。
我們做自動化測試,就是需要通過模擬手工對元素的操作來實現自動化。腳本無法做到指哪打哪,不能像手工操作那樣鼠標移過去點一下就行,畢竟代碼沒有自我辨別能力。
開發者工具
開發者工具是瀏覽器自帶的網頁調試工具,其中最好用的要數谷歌瀏覽器(Chrome)和火狐瀏覽器(Firefox)。一般通過 F12 快捷鍵就可以打開。通過此工具可以查看網頁元素來尋找可以定位的方法。
首先,我們打開百度首頁(http://www.baidu.com),在這個頁面上有搜索的輸入框、有搜索按鈕、以及圖片和各種鏈接等。
接下來,通過開發者工具來查看網頁元素。
快捷鍵F12
(如果你的筆記本電腦有 Fn
鍵,需要注意可能是 Fn + F12
),打開后如下圖:
- 左上角的箭頭按鈕,用來查看元素,
- 點擊該按鈕后,想查看哪個元素就點哪個元素;
- 當你點擊想看的元素后,會自動在下方頁面結構中選中該元素;
- 在下方的元素結構中可以看到你選擇的元素,可以觀察其標簽名、屬性值等
- 在底部使用 CSS 選擇器的層級表示方式顯示的當前選擇元素的層級
我們通過上圖可以看到,頁面上得元素都是由一行行的HTML代碼組成,它們之間是有層級組織起來的,每個元素有不同的標簽名和屬性值。
HTML 簡介
HTML 稱指的是超文本標記語言 (Hyper Text Markup Language),使用標記標簽來描述網頁內容。
通常,我們把包括 尖括號、標簽名、屬性、文本 構成一個最基本的頁面元素element
。
WebDriver 就是通過元素的標簽名或各種屬性值來查找元素。
除此之外,HTML代碼有如下特征:
- 由標簽對構成
<html></html>
<body></body>
<div></div>
html、div 以及上面提到的 a ,就是標簽名 tag name
。
- 標簽有各種屬性
<div id="wrapper" style="display: block;">
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
屬性有 id,name,class,href 等。
3. 標簽對之間有文本數據
<label class="checkbox"><input type="checkbox" name="autologin"> 三日內自動登陸</label>
<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新聞</a>
在兩個標簽對之間的文字,就是這個標簽對應的文本。
思考一下,第一個例子中“三日內自動登陸”屬於哪個標簽的文本?
- 元素有層級關系
<div>
<form>
<input />
</form>
</div>
input 為 form 元素的子元素。div 是 input 元素的 祖先元素。
了解了 開發者工具 和 HTML 基礎 ,接下來就可以通過 Selenium 進行元素定位了。