此文主要講述用 Java 編寫 Selenium 自動(dòng)化測(cè)試腳本編寫過(guò)程中,對(duì)下拉列表框 Select 的操作。
下拉列表是 Web UI 自動(dòng)化測(cè)試過(guò)程中使用率非常高的,通常有兩種形式的下拉列表,一種是 Select 的下拉列表,此種操作的時(shí)候比較簡(jiǎn)單,定位到元素后直接操作即可;還有的下拉列表是以多個(gè) div + js + input 的形式實(shí)現(xiàn),input 用于存儲(chǔ)選擇的項(xiàng)的 value 值;當(dāng)然也會(huì)有其他方式實(shí)現(xiàn)的下拉列表。
希望能對(duì)初學(xué) Selenium2 WebUI 自動(dòng)化測(cè)試編程的親們有所幫助。若有不足之處,敬請(qǐng)大神指正,不勝感激!
以下為 Selenium 操作下拉列表 Select 的 Java 自動(dòng)化測(cè)試腳本實(shí)例源代碼,敬請(qǐng)參閱!

1 package main.aaron.demo.droplist; 2 3 import main.aaron.sele.core.TestCase; 4 5 import org.openqa.selenium.By; 6 import org.openqa.selenium.WebElement; 7 import org.openqa.selenium.support.ui.Select; 8 import org.testng.annotations.Test; 9 10 /** 11 * Selenium 操作下拉列表實(shí)例-Select 12 * 13 * @author Aaron.ffp 14 * @version V1.0.0: autoSeleniumDemo main.aaron.demo.droplist Droplist01.java, 2015-6-16 19:03:51 Exp $ 15 */ 16 public class Droplist01 extends TestCase{ 17 // 獲取需要打開(kāi)的鏈接的 URL 路徑 18 private final String baseUrl = this .PROJECTHOME + this .FILESEPARATOR + "source" + 19 this .FILESEPARATOR + "html" + this .FILESEPARATOR + "selectDemo.html" ; 20 21 @Test 22 public void testDropList(){ 23 this .webdriver.get( this .baseUrl); 24 25 // 獲取元素-下拉列表 26 WebElement goodsTypeList = this .webdriver.findElement(By.id("goodsType" )); 27 28 // 將元素轉(zhuǎn)換為 Select 29 Select gtl = new Select(goodsTypeList); 30 31 // 模擬用戶點(diǎn)擊動(dòng)作展開(kāi)下拉列表,也可不執(zhí)行直接選擇; 32 // 若是執(zhí)行此步再選擇下拉列表之后無(wú)其他操作時(shí),列表會(huì)一直存在;執(zhí)行其他操作時(shí),列表收起 33 goodsTypeList.click(); 34 35 // 通過(guò)列表項(xiàng)的 option 索引選擇,也可不執(zhí)行 36 gtl.selectByIndex(3 ); 37 38 this .webdriver.findElement(By.id("goods" )).clear(); 39 this .webdriver.findElement(By.id("goods")).sendKeys( this .selectSelected(gtl)); 40 41 /** 42 // 通過(guò)列表項(xiàng)的 option 的 value 值選擇 43 gtl.selectByValue("3v"); 44 45 // 通過(guò)列表項(xiàng)的 option 的 text 值選擇 46 gtl.selectByVisibleText("汽車精品"); 47 48 // 遍歷列表項(xiàng)的所有可選項(xiàng),并選擇對(duì)應(yīng)的項(xiàng) 49 for (int i = 0; i < gtl.getOptions().size(); i++) { 50 gtl.getOptions().get(i).click(); 51 } 52 53 // 遍歷列表項(xiàng)的所有可選項(xiàng),并選擇對(duì)應(yīng)的項(xiàng) 54 for (WebElement item : gtl.getOptions()) { 55 item.click(); 56 } 57 */ 58 } 59 }
以下為上述代碼中調(diào)用的方法源碼

1 /** 2 * 獲取 Select 已選中的項(xiàng)的 text 值 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoSeleniumDemo main.aaron.sele.core SeleniumCore.java selectSelected, 2015-6-16 19:40:02 Exp $ 6 * 7 * @param select : Select 下拉列表對(duì)象 8 * @return 已選擇項(xiàng)的 text 值 9 */ 10 public String selectSelected(Select select){ 11 String text = ""; 12 13 for (int i = 0; i < select .getOptions().size(); i++) { 14 if (select.getOptions().get(i).isSelected()) { 15 text = select.getOptions().get(i).getText(); 16 17 return text; 18 } 19 } 20 21 return text; 22 }
以下為 Select 下拉列表源碼(selectDemo.html):

1 < html > 2 < head > 3 < meta charset ='utf-8' > 4 < title > 下拉列表框 </ title > 5 </ head > 6 7 < body > 8 < a id ="goodtype" > 商品分類: </ a > 9 < select id ="goodsType" > 10 < option value ="0v" > 請(qǐng)選擇... </ option > 11 < option value ="1v" > 筆記本 </ option > 12 < option value ="2v" > 硬件外設(shè) </ option > 13 < option value ="3v" > 大家電 </ option > 14 < option value ="4v" > 創(chuàng)意小電 </ option > 15 < option value ="5v" > 個(gè)護(hù)電器 </ option > 16 < option value ="6v" > 汽車精品 </ option > 17 < option value ="7v" > 辦公文具 </ option > 18 </ select > 19 20 < input id ="goods" type ="text" ></ input > 21 </ body > 22 </ html >
由上述源碼可知,操作下拉列表-Select 時(shí),首先要獲得 Select 元素(Selenium 自動(dòng)化頁(yè)面操作的基礎(chǔ)),再 new 一個(gè) Select 對(duì)象,然后對(duì) Select 對(duì)象進(jìn)行操作,即可正確的進(jìn)行下拉列表的操作,以及獲取下拉列表當(dāng)前已選擇的項(xiàng)值。動(dòng)手能力強(qiáng)的親們,也可以自己封裝一下 Selenium 對(duì) Select 的操作幾個(gè)有用方法,例如:判斷 option 的 value 是否存在;判斷 option 的 text 值是否存在;判斷 index 值是否超出 option 的數(shù)組邊界。。。等等,用于后續(xù)的 WEB UI 自動(dòng)化。
選擇下拉列表項(xiàng)的方法有三種:(1)option 的 index,(2)option 的 value,(3)option 的 text。無(wú)論選擇哪種方法,建議對(duì)三者的值進(jìn)行校驗(yàn)判斷,否則易出現(xiàn)元素不存在的錯(cuò)誤,當(dāng)然也可以對(duì)代碼 try...catch 一下,以處理異常。
PS:使用上述源碼時(shí),注意一下幾點(diǎn):
1、替換源碼中的 baseUrl 為實(shí)際路徑;
2、將 selectSelected 方法正確添加到源碼,否則執(zhí)行的時(shí)候會(huì)報(bào)錯(cuò)
3、自行添加啟動(dòng)瀏覽器的代碼
?
下拉列表框操作下期精彩: Selenium2學(xué)習(xí)-014-WebUI自動(dòng)化實(shí)戰(zhàn)實(shí)例-012-Selenium 操作下拉列表實(shí)例-div+{js|jquery}
?
至此, WebUI 自動(dòng)化功能測(cè)試腳本 第 008 篇-下拉列表框 Select 操作 順利完結(jié),希望此文能夠給初學(xué) Selenium 的您一份參考。
最后,非常感謝親的駐足,希望此文能對(duì)親有所幫助。熱烈歡迎親一起探討,共同進(jìn)步。非常感謝! ^_^
?
Selenium2學(xué)習(xí)-010-WebUI自動(dòng)化實(shí)戰(zhàn)實(shí)例-008-Selenium 操作下拉列表實(shí)例-Select
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
