Selenium Web Driver自動(dòng)化測(cè)試(java版)系列下半部分(16) - 元素操作 - 下拉列表

這篇文章介紹下拉列表。下拉列表長(zhǎng)這樣:

有只可以選擇一個(gè)選項(xiàng)的,也有可以選擇多個(gè)選項(xiàng)的。先說(shuō)只能選一個(gè)的贮庞。該類下拉列表html源代碼是這樣的:

打開示例網(wǎng)頁(yè)webelements.html用firebug定位手機(jī)品牌那個(gè)下拉列表:

介紹操作之前先把準(zhǔn)備工作做好。新建一個(gè)叫SeleniumDropDownListSingle的java項(xiàng)目 -> 包c(diǎn)om.test -> Test.java究西,添加selenium jar包窗慎,把driver聲明配置好,把webelements.html網(wǎng)頁(yè)全屏打開卤材,然后用name定位器寫代碼:

返回一個(gè)下拉列表的對(duì)象遮斥。因?yàn)槭歉謾C(jī)有關(guān),所以起個(gè)名叫mobileDropDownList扇丛。

通常术吗,只可以選擇一個(gè)的下拉列表有以下幾種操作:

1. 檢查是否顯示;
2. 檢查是否啟用帆精;
3. 選擇一個(gè)選項(xiàng);
4. 檢查哪個(gè)被選上了较屿。

前兩個(gè)還是顯示和啟用,其實(shí)幾乎每一個(gè)控件都有這兩種操作:

第三個(gè)是選擇一個(gè)選項(xiàng)卓练,選項(xiàng)可以通過(guò)索引值隘蝎,選項(xiàng)內(nèi)容,以及可見(jiàn)文本三種方法來(lái)選擇:

這三種用哪個(gè)都可以襟企,效果是一樣的嘱么。但是,這些方法都不是用下拉列表對(duì)象mobileDropDownList調(diào)用的顽悼,而是需要用mobileDropDownList先聲明一個(gè)關(guān)于選項(xiàng)的對(duì)象曼振,然后用選項(xiàng)的對(duì)象再調(diào)用几迄。先用索引值示范,上代碼:

運(yùn)行程序冰评,蘋果映胁,三星,紅米三個(gè)值依次被選集索∮煊蓿看見(jiàn)了嗎汇跨?它先用mobileDropDownList作為參數(shù)創(chuàng)建一個(gè)名為mobileOptions的Select對(duì)象务荆,你可以把mobileOptions理解成是一個(gè)對(duì)于選項(xiàng)的對(duì)象。Select這個(gè)類也是Selenium里自帶的穷遂,我不知道它是不是為了迎合下拉列表html源代碼里面那個(gè)Select標(biāo)簽函匕,但大家可以這么記,比較方便蚪黑。select么盅惜,選擇的意思,用來(lái)創(chuàng)建代表選項(xiàng)的對(duì)象忌穿。

Index是索引的意思抒寂,所以selectByIndex()方法的意思就是按照索引來(lái)選擇。這里索引指的是選項(xiàng)的位置:第一個(gè)選項(xiàng)是0掠剑,第二個(gè)是1屈芜,第三個(gè)是2,以此類推朴译。有人估計(jì)已經(jīng)看出來(lái)了井佑,這不就是數(shù)組的感覺(jué)么?沒(méi)錯(cuò)眠寿,就是那感覺(jué)躬翁,也是從0開始。咱們例子中0對(duì)應(yīng)蘋果盯拱,1對(duì)應(yīng)三星盒发,2對(duì)應(yīng)紅米。而且如果你用想找紅米卻寫成了selectByIndex(3)那就肯定拋異常了狡逢。索引作為參數(shù)傳入該方法迹辐,是個(gè)整型的數(shù)據(jù)。

第二個(gè)方法是通過(guò)選項(xiàng)內(nèi)容甚侣,用selectByValue()明吩,也是用Select類的對(duì)象(選項(xiàng)的對(duì)象)mobileOptions來(lái)調(diào)用,參數(shù)就是選項(xiàng)的值殷费,也就是下拉列表html代碼里<option>標(biāo)簽里的value屬性值:

很明顯印荔,參數(shù)應(yīng)該用字符串了低葫,不能再用整型了。而且要注意的是仍律,不是<option></option>之間夾著的那個(gè)文字嘿悬,<option></option>之間夾著的那個(gè)是你刷出網(wǎng)頁(yè)時(shí)顯示的文本,也是咱們第三個(gè)selectByVisibleText()用到的水泉,不是它的value屬性值善涨。雖然這個(gè)例子里它們和屬性值是一樣的,但純屬巧合草则,下一個(gè)例子我保證不這么寫了钢拧。用selectByValue()的代碼如下:

第三個(gè)就是selectByVisibleText(),參數(shù)用的就是<option>&lt/option>之間夾著的那些文字炕横,也就是網(wǎng)頁(yè)顯示出來(lái)時(shí)你看見(jiàn)的值:

代碼如下:

再?gòu)?qiáng)調(diào)一遍源内,selectByValue找的是value屬性值,selectByVisibleText找的是<option>&lt/option>之間的值份殿,很多人都會(huì)把兩者搞混膜钓,一定注意它們之間的區(qū)別。當(dāng)然卿嘲,你可以沒(méi)事三者混用玩玩:

第四個(gè)操作檢查哪個(gè)被選上了颂斜,用到的方法是連續(xù)調(diào)用getFirstSelectedOption()和getText():

以上就是單項(xiàng)選擇下拉列表的例子,下一個(gè)是關(guān)于多項(xiàng)選擇的拾枣。多項(xiàng)選擇的下拉列表html源代碼和單項(xiàng)只有一個(gè)區(qū)別沃疮,多了一個(gè)multiple=””的屬性:

multiple=””其實(shí)里面并不用給任何值,它本身就起到了一個(gè)標(biāo)識(shí)的作用放前。上面還有一個(gè)size屬性忿磅,指明列表框有多大,同時(shí)可以顯示幾個(gè)選項(xiàng)凭语。你可以隨意調(diào)節(jié)大小葱她,有興趣的朋友可以多研究研究。webelements.html網(wǎng)頁(yè)中的多項(xiàng)下拉列表是關(guān)于興趣愛(ài)好的:

多項(xiàng)下拉列表除了擁有單項(xiàng)下拉列表的所有常規(guī)操作外似扔,還有另外幾個(gè):

1. 檢查是否顯示吨些;
2. 檢查是否啟用;
3. 選擇一個(gè)選項(xiàng)炒辉;
4. 檢查哪個(gè)被選上了豪墅;
5. 檢查是否為多項(xiàng)下拉列表;
6. 選擇多個(gè)選項(xiàng)黔寇;
7. 去掉已選選項(xiàng)偶器。

先看第5種操作,選擇多個(gè)選項(xiàng)。想想就知道屏轰,你可以通過(guò)多次使用selectByIndex()/selectByValue()/selectByVisibleText()來(lái)把好幾個(gè)選項(xiàng)同時(shí)選上颊郎,不會(huì)像單選下拉列表那樣只能有一個(gè)被選。比如我要把上面例子中“足球”和“電影”選上:

第6種操作霎苗,去掉已選選項(xiàng)姆吭。因?yàn)閱雾?xiàng)下拉列表只能選一個(gè)的特點(diǎn),假如你剛選好一個(gè)就后悔了唁盏,本來(lái)應(yīng)該選A結(jié)果選成B了内狸,那直接改成A就行。多項(xiàng)下拉列表不一樣厘擂,本來(lái)應(yīng)該選A我選成B了昆淡,你如果不去掉B選項(xiàng)就直接選擇A結(jié)果就是兩者同時(shí)被選了。所以驴党,去掉已選選項(xiàng)在多項(xiàng)下拉列表中也會(huì)經(jīng)常用到瘪撇。Selenium提供了兩個(gè)方法來(lái)處理获茬。第一種是通過(guò)索引值/選項(xiàng)內(nèi)容/選項(xiàng)文本去掉指定的某一個(gè)選項(xiàng):

既然可以通過(guò)這三者選擇港庄,當(dāng)然也就可以通過(guò)這三者去掉選擇,其實(shí)就是把選擇的方法前面加個(gè)”de”恕曲,select是選擇鹏氧,deSelect是去掉選擇,很好理解佩谣。參數(shù)也一樣把还,index代表位置索引,value代表屬性值茸俭,visibleText代表<option></option>中間的東西吊履。比如我的test case是先把“足球”和“看電影”選上,然后去掉“足球”调鬓,再把“游泳”選上艇炎,代碼就是:

第二種方式是直接干脆全去掉,用deSelectAll():

最后一個(gè)操作是檢查是否為多項(xiàng)下拉列表腾窝,用到的方法是isMultiple()缀踪,一看is開頭的幾乎都是返回布爾類型的,是多項(xiàng)返回true虹脯,是單項(xiàng)返回false:

以上就是下拉列表的操作驴娃,這篇文章的源代碼在SeleniumDropDownListSingleSeleniumDropDownListMulti兩個(gè)項(xiàng)目中。

本篇知識(shí)點(diǎn)及注意事項(xiàng):
1. 下拉列表可以通過(guò)索引值循集、選項(xiàng)內(nèi)容唇敞、可見(jiàn)文本來(lái)選擇選項(xiàng)。
2. 和單項(xiàng)下拉列表不同,多項(xiàng)下拉列表?yè)Q選項(xiàng)時(shí)要去掉之前的已選選項(xiàng)疆柔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蕉世,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子婆硬,更是在濱河造成了極大的恐慌狠轻,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彬犯,死亡現(xiàn)場(chǎng)離奇詭異向楼,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)谐区,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門湖蜕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人宋列,你說(shuō)我怎么就攤上這事昭抒。” “怎么了炼杖?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵灭返,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我坤邪,道長(zhǎng)熙含,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任艇纺,我火速辦了婚禮怎静,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘黔衡。我一直安慰自己蚓聘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布盟劫。 她就那樣靜靜地躺著夜牡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捞高。 梳的紋絲不亂的頭發(fā)上氯材,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音硝岗,去河邊找鬼氢哮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛型檀,可吹牛的內(nèi)容都是我干的冗尤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼裂七!你這毒婦竟也來(lái)了皆看?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤背零,失蹤者是張志新(化名)和其女友劉穎腰吟,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徙瓶,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡毛雇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侦镇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灵疮。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖壳繁,靈堂內(nèi)的尸體忽然破棺而出震捣,到底是詐尸還是另有隱情,我是刑警寧澤闹炉,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布蒿赢,位于F島的核電站,受9級(jí)特大地震影響剩胁,放射性物質(zhì)發(fā)生泄漏诉植。R本人自食惡果不足惜祥国,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一昵观、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧舌稀,春花似錦啊犬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至睡腿,卻和暖如春语御,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背席怪。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工应闯, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挂捻。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓碉纺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骨田,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容