python webdriver中對不同下拉框通過文本值的選擇


在自動化中python對下拉框的處理網上相對實例比較少,其它前輩寫的教程中對下拉也僅僅是相對與教程來說的,比如下面:

m=driver.find_element_by_id("ShippingMethod")
m.find_element_by_xpath("//option[@value='10.69']").click()

對下拉框后再進行屬性定位的點擊!

但在實際應用中,不可能通過value值來判斷,一般都是通過當前顯示的值來判斷,所以教程只能教你入門,但應用還得靠自己。

廢話少說,開始教程

一、典型的select option格式下接框

比如下面這樣一段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對接  該如何選擇呢,

方法一如下:

    #遍歷下拉框並選擇需要的項目
    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

也可用網上的方法二:

Select(driver.find_element_by_name("testproject")).select_by_visible_text("test6:QQ對接")

但方法二必需要將文本寫全才對選擇,如果寫錯那也不能選

 

二、用了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


三、我們在網上填寫資料時,經常會遇到下面這種框

這種款,不能手工輸入,輸入后會不識別,是因為后台將值傳換為對應的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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM