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

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 操作下拉列表實例-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 // 獲取需要打開的鏈接的 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 // 將元素轉換為 Select 29 Select gtl = new Select(goodsTypeList); 30 31 // 模擬用戶點擊動作展開下拉列表,也可不執行直接選擇; 32 // 若是執行此步再選擇下拉列表之后無其他操作時,列表會一直存在;執行其他操作時,列表收起 33 goodsTypeList.click(); 34 35 // 通過列表項的 option 索引選擇,也可不執行 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 // 通過列表項的 option 的 value 值選擇 43 gtl.selectByValue("3v"); 44 45 // 通過列表項的 option 的 text 值選擇 46 gtl.selectByVisibleText("汽車精品"); 47 48 // 遍歷列表項的所有可選項,并選擇對應的項 49 for (int i = 0; i < gtl.getOptions().size(); i++) { 50 gtl.getOptions().get(i).click(); 51 } 52 53 // 遍歷列表項的所有可選項,并選擇對應的項 54 for (WebElement item : gtl.getOptions()) { 55 item.click(); 56 } 57 */ 58 } 59 }
以下為上述代碼中調用的方法源碼

1 /** 2 * 獲取 Select 已選中的項的 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 下拉列表對象 8 * @return 已選擇項的 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" > 請選擇... </ option > 11 < option value ="1v" > 筆記本 </ option > 12 < option value ="2v" > 硬件外設 </ option > 13 < option value ="3v" > 大家電 </ option > 14 < option value ="4v" > 創意小電 </ option > 15 < option value ="5v" > 個護電器 </ 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 時,首先要獲得 Select 元素(Selenium 自動化頁面操作的基礎),再 new 一個 Select 對象,然后對 Select 對象進行操作,即可正確的進行下拉列表的操作,以及獲取下拉列表當前已選擇的項值。動手能力強的親們,也可以自己封裝一下 Selenium 對 Select 的操作幾個有用方法,例如:判斷 option 的 value 是否存在;判斷 option 的 text 值是否存在;判斷 index 值是否超出 option 的數組邊界。。。等等,用于后續的 WEB UI 自動化。
選擇下拉列表項的方法有三種:(1)option 的 index,(2)option 的 value,(3)option 的 text。無論選擇哪種方法,建議對三者的值進行校驗判斷,否則易出現元素不存在的錯誤,當然也可以對代碼 try...catch 一下,以處理異常。
PS:使用上述源碼時,注意一下幾點:
1、替換源碼中的 baseUrl 為實際路徑;
2、將 selectSelected 方法正確添加到源碼,否則執行的時候會報錯
3、自行添加啟動瀏覽器的代碼
?
下拉列表框操作下期精彩: Selenium2學習-014-WebUI自動化實戰實例-012-Selenium 操作下拉列表實例-div+{js|jquery}
?
至此, WebUI 自動化功能測試腳本 第 008 篇-下拉列表框 Select 操作 順利完結,希望此文能夠給初學 Selenium 的您一份參考。
最后,非常感謝親的駐足,希望此文能對親有所幫助。熱烈歡迎親一起探討,共同進步。非常感謝! ^_^
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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