在自動化中python對下拉框的處理網上相對實例比較少,其它前輩寫的教程中對下拉也僅僅是相對與教程來講的,好比下面:php
m=driver.find_element_by_id("ShippingMethod") m.find_element_by_xpath("//option[@value='10.69']").click()
對下拉框後再進行屬性定位的點擊!html
但在實際應用中,不可能經過value值來判斷,通常都是經過當前顯示的值來判斷,因此教程只能教你入門,但應用還得靠本身。python
廢話少說,開始教程bootstrap
1、典型的select option格式下接框ide
好比下面這樣一段html代碼,在實際自動化測試中不可能經過value值來判斷,由於每次都得看value值,更多的時候是經過title值來判斷的測試
<html> <body> <div class="menu_bar" style="margin: 0px 5px 0px 135px;"> <div style="display: inline; "> <form style="display:inline" name="productForm" action="lib/general/navBar.php" method="get"> <input type='hidden' name='CSRFName' id='CSRFName' value='CSRFGuard_1522071984' /> <input type='hidden' name='CSRFToken' id='CSRFToken' value='a1bd2844bf055061e48b4ed7a1400f5574030db73737bbdb356ec9ab3efa0cd9de4187f0a521f28f2b2a85574d01171c674d81cdcec7410e1cca36c31e7919c0' /> 測試產品 <select style="font-size: 80%;position:relative; top:-1px;" name="testproject" onchange="this.form.submit();"> <option value="2" title="test1:某某某監控系統" > test1:某某某監控系統</option> <option value="12810" title="test2:某某能力平臺" > test2:某某能力平臺</option> <option value="1332" title="test3:某某財務系統" > test3:某某財務系統</option> <option value="12684" title="test4:公共平臺" > test4:公共平臺</option> <option value="1" title="test5:北京霧霾監控" selected="selected" > test5:北京霧霾監控</option> <option value="31823" title="test6:QQ對接" > test6:QQ對接</option> <option value="32154" title="test7:南方都市報" > test7:南方都市報</option> <option value="1528" title="test8:聯通平臺" > test8:聯通平臺/option> <option value="944" title="test9:移動平臺" > test9:移動平臺</option> </select> </form> </div> </body> </html>
測試產品
例如咱們要選擇 test6:QQ對接 該如何選擇呢,this
方法一以下:spa
#遍歷下拉框並選擇須要的項目 select = browser.find_element_by_name("testproject") allOptions = select.find_elements_by_tag_name("option") for option in allOptions: print "Value is: " + option.get_attribute("value") print "Text is:" +option.text if 'test6' in option.text: option.click() break
也可用網上的方法二:code
Select(driver.find_element_by_name("testproject")).select_by_visible_text("test6:QQ對接")
但方法二必須要將文本寫全才對選擇,若是寫錯那也不能選orm
2、用了bootstrap特效的dropdow下拉框
以下圖中的下拉框
類型這種用下面這種方法:
browser.find_element_by_xpath("//div[contains(@class,'chosen-c')]").click() time.sleep(1) lis=browser.find_elements_by_xpath("//ul[@class='chosen-results']/li") for li in lis: if "行業測試" in li.text: i.click() break time.sleep(2)
也是經過獲取元素對像list來遍歷,獲得想要的數據後就中止,這裏注意
find_elements_by_xpath 是elements
3、咱們在網上填寫資料時,常常會遇到下面這種框
這種款,不能手工輸入,輸入後會不識別,是由於後臺將值傳換爲對應的code,因此必須靠手工選,好比深圳出入境申請網頁的選擇,能夠用以下方法:
provides=browser.find_elements(By.XPATH,"//div[starts-with(@class,'x-grid3-row')]")
while True: if [ttd for ttd in provides if "江西" in ttd.text]: for ttd in provides: if "江西" in ttd.text: print 'Click OK' ttd.click() break else:continue break else: browser.find_element_by_xpath("//button[starts-with(@class,'x-btn-text x-tbar-page-next')]").click() provides=browser.find_elements(By.XPATH,"//div[starts-with(@class,'x-grid3-row')]") print [provide.text for provide in provides][1] time.sleep(1)
將元素獲取後再將值循環,若是值在內就跳出循環,若是值不在內,就點擊下一頁
總結:在實際自動化測試中page_object模式中,這就很是方例如將數據提取出來了
參考:http://www.bubuko.com/infodetail-1115484.html