頁面元素定位是自動化中重要的事情, selenium Webdriver 提供了很多種元素定位的方法。 測試人員應該熟練掌握各種定位方法。 使用簡單,穩定的定位方法。
自動化測試步驟
在自動化測試過程中, 測試程序通常的操作頁面元素步驟
1. 找到Web的頁面元素,并賦予到一個存儲對象中 (WebElement)
2. 對存儲頁面元素的對象進行操作, 例如:點擊鏈接,在輸入框中輸入字符等
3. 驗證頁面上的元素是否符合預期
通過這三個步驟, 我們可以完成一個頁面元素的操作, 找到頁面元素是很重要的一個步驟。 找不到頁面元素,后面沒法做了。
Web頁面技術的現實復雜性, 造成大量的頁面元素很難定位。 經常有人不知道怎么定位。
定位方法大全
使用WebDriver對象的findElement函數定義一個Web頁面元素
使用findElements函數可以定位頁面的多個元素
定位的頁面元素需要使用WebElement對象來存儲,以便后續使用
常用的定位頁面元素方法如下, 按推薦排序
如何定位
在使用selenium webdriver進行元素定位時,通常使用findElement或findElements方法結合By類返回元素句柄來定位元素
findElement() 方法返回一個元素, 如果沒有找到,會拋出一個異常 NoElementFindException()
findElements()方法返回多個元素, 如果沒有找到,會返回空數組, 不會拋出異常
如何選擇定位方法
策略是, 選擇簡單,穩定的定位方法。
1. 當頁面元素有id屬性的時候,盡量使用id來定位。沒有的話再選擇其他定位方法
2. cssSelector 執行速度快,推薦使用
3. 定位超鏈接的時候,可以考慮linkText或partialLinkText:但是要注意的是 ,文本經常發生改變,所以不推薦用
3. xpath 功能強悍。 當時執行速度慢,因為需要查找整個DOM, 所以盡量少用。 實在沒有辦法的時候,才使用xpath
通過ID查找元素: By.id()
通過頁面元素的ID來查找元素是為推薦的方式, W3C標準推薦開發人員為每一個頁面元素都提供的ID屬性
一旦元素被賦予了的ID屬性., 我們做自動化測試的時候,很容易定位到元素. 元素的ID被作為的識別屬性, 因為是快的識別策略.
以百度主頁為例, 搜索框的HTML示例代碼如下, 它的ID為kw
<input type="text" autocomplete="off" maxlength="100" id="kw" name="wd" class="s_ipt">
“百度一下”搜索按鈕元素的HTML示例代碼如下, 它ID為su
<input type="submit" class="btn self-btn bg s_btn" id="su" value="百度一下">
在Selenium/WebDriver 中通過ID查找元素的Java示例代碼如下
WebDriver driver = new FirefoxDriver();
driver.get("http://www.baidu.com");
WebElement searchBox = driver.findElement(By.id("kw"));
searchBox.sendKeys("小坦克 博客園");
WebElement searchButton = driver.findElement(By.id("su"));
searchButton.submit();
driver.close();