<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    輕松自動化---selenium-webdriver(python) (四)-定位一組元素

    本節要解決的問題:

    如何定位一組元素?

     

    場景

    從上一節的例子中可以看出,webdriver可以很方便的使用findElement方法來定位某個特定的對象,不過有時候我們卻需要定位一組對象,

    這時候就需要使用findElements方法。

     

    定位一組對象一般用于以下場景:

    · 批量操作對象,比如將頁面上所有的checkbox都勾上

    · 先獲取一組對象,再在這組對象中過濾出需要具體定位的一些對象。比如定位出頁面上所有的checkbox,然后選擇最后一個

    復制代碼
    <html>     <head>         <meta http-equiv="content-type" content="text/html;charset=utf-8" />         <title>Checkbox</title>         <script type="text/javascript" async="" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>         <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />         <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>     </head>     <body>         <h3>checkbox</h3>         <div class="well">             <form class="form-horizontal">                 <div class="control-group">                     <label class="control-label" for="c1">checkbox1</label>                     <div class="controls">                         <input type="checkbox" id="c1" />                     </div>                 </div>                 <div class="control-group">                     <label class="control-label" for="c2">checkbox2</label>                     <div class="controls">                         <input type="checkbox" id="c2" />                     </div>                 </div>                 <div class="control-group">                     <label class="control-label" for="c3">checkbox3</label>                     <div class="controls">                         <input type="checkbox" id="c3" />                     </div>                 </div>                              <div class="control-group">                     <label class="control-label" for="r">radio</label>                     <div class="controls">                         <input type="radio" id="r1" />                     </div>                 </div>                                  <div class="control-group">                     <label class="control-label" for="r">radio</label>                     <div class="controls">                         <input type="radio" id="r2" />                     </div>                 </div>             </form>         </div>     </body> </html>
    復制代碼

    將這段代碼保存復制到記事本中,將保存成checkbox.html文件。(注意,這個頁面需要和我們的自動化腳本放在同一個目錄下

     

     

     

    第一種方法:

    通過瀏覽器打個這個頁面我們看到三個復選框和兩個單選框。下面我們就來定位這三個復選框。

    復制代碼
    # -*- coding: utf-8 -*- from selenium import webdriver import time import os  dr = webdriver.Firefox() file_path =  'file:///' + os.path.abspath('checkbox.html') dr.get(file_path)  # 選擇頁面上所有的input,然后從中過濾出所有的checkbox并勾選之 inputs = dr.find_elements_by_tag_name('input') for input in inputs:     if input.get_attribute('type') == 'checkbox':         input.click() time.sleep(2)  dr.quit()
    復制代碼

    你可以試著把input.get_attribute('type') == 'checkbox' 中的checkbox 變成radio ,那這個腳本定位的會是兩個單選框。

     

    第二種定位方法:

    復制代碼
    # -*- coding: utf-8 -*- from selenium import webdriver import time import os  dr = webdriver.Firefox() file_path =  'file:///' + os.path.abspath('checkbox.html') dr.get(file_path)  # 選擇所有的checkbox并全部勾上 checkboxes = dr.find_elements_by_css_selector('input[type=checkbox]') for checkbox in checkboxes:     checkbox.click() time.sleep(2)  # 打印當前頁面上有多少個checkbox print len(dr.find_elements_by_css_selector('input[type=checkbox]')) time.sleep(2)  dr.quit()
    復制代碼

    第二種寫法與第一種寫法差別不大,都是通過一個循環來勾選控件;如果你學過上一章的話,細心的你一定發現用的定位函數不一樣,

    第一種用的name ,第二種用的CSS 。

     

     如何去掉勾選:

    還有一個問題,有時候我們并不想勾選頁面的所有的復選框(checkbox),可以通過下面辦法把最后一個被勾選的框去掉。如下:

    復制代碼
    # -*- coding: utf-8 -*- from selenium import webdriver import time import os  dr = webdriver.Firefox() file_path =  'file:///' + os.path.abspath('checkbox.html') dr.get(file_path)  # 選擇所有的checkbox并全部勾上 checkboxes = dr.find_elements_by_css_selector('input[type=checkbox]') for checkbox in checkboxes:     checkbox.click() time.sleep(2)  # 把頁面上最后1個checkbox的勾給去掉 dr.find_elements_by_css_selector('input[type=checkbox]').pop().click() time.sleep(2)  dr.quit()
    復制代碼

    其實,去掉勾選表也邏輯也非常簡單,就是再次點擊勾選的按鈕。可能我們比較迷惑的是如何找到“最后一個”按鈕。pop() 可以實現這個功能。

    好吧!在web自動化的學習過程中,我們必須要知道一些前端的東西,這里擴展一下:

    http://www.w3school.com.cn/js/jsref_pop.asp

     

     

    嘗試

    把find_elements_by_css_selector('input[type=checkbox]').pop().click() 中的checkbox 變成radio 會是什么效果,自己嘗試一下吧!

     

     

     

    posted on 2014-03-14 11:19 順其自然EVO 閱讀(1824) 評論(0)  編輯  收藏 所屬分類: 自動化測試python

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 精品国产一区二区三区免费| 久久亚洲一区二区| 亚洲一区二区三区在线网站| 曰批全过程免费视频网址| 亚洲午夜福利在线观看| 一级免费黄色大片| 亚洲色偷偷综合亚洲AVYP| A毛片毛片看免费| 亚洲VA中文字幕不卡无码| 99精品视频在线观看免费| 久久精品国产亚洲一区二区| 两个人看的www免费高清| 亚洲国产无套无码av电影| 91久久青青草原线免费| 亚洲熟女精品中文字幕| 亚洲国产免费综合| 日韩精品极品视频在线观看免费| 亚洲AV成人精品网站在线播放| 你懂的免费在线观看网站| 亚洲欧洲日本精品| 亚洲成年看片在线观看| 在线免费观看国产| 日韩亚洲人成在线综合| 亚洲国产精品久久久天堂| 韩国免费一级成人毛片| 一级特黄特色的免费大片视频| 亚洲高清国产AV拍精品青青草原 | 一级毛片a女人刺激视频免费| 亚洲人成网www| 一区国严二区亚洲三区| 污污网站免费观看| 337p日本欧洲亚洲大胆人人| 亚洲男人都懂得羞羞网站| 天堂亚洲免费视频| 美女视频黄的全免费视频 | 亚洲精品天堂无码中文字幕| 国产亚洲成AV人片在线观黄桃| 四虎成人免费大片在线| 日韩电影免费在线观看| 免费中文字幕视频| 亚洲人成无码网站在线观看|