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

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

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

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

    輕松自動(dòng)化---selenium-webdriver(python) (五)--層級(jí)定位

    本節(jié)要解決的問題:

    • 層級(jí)定位

     

    場景:

      假如兩個(gè)控件,他們長的一模樣,還都叫“張三”,唯一的不同是一個(gè)在北京,一個(gè)在上海,那我們就可以通過,他們的城市,區(qū),街道,來找到他們。

     

      在實(shí)際的測試中也經(jīng)常會(huì)遇到這種問題:頁面上有很多個(gè)屬性基本相同的元素,現(xiàn)在需要具體定位到其中的一個(gè)。由于屬性基本相當(dāng),所以在定位的時(shí)候會(huì)有些麻煩,這時(shí)候就需要用到層級(jí)定位。先定位父元素,然后再通過父元素定位子孫元素。

    復(fù)制代碼
    <html>     <head>         <meta http-equiv="content-type" content="text/html;charset=utf-8" />         <title>Level Locate</title>                 <script type="text/javascript" async="" src="http://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" />             </head>     <body>         <h3>Level locate</h3>         <div class="span3">                     <div class="well">                 <div class="dropdown">                     <a class="dropdown-toggle" data-toggle="dropdown" href="#">Link1</a>                     <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel" id="dropdown1" >                         <li><a tabindex="-1" href="#">Action</a></li>                         <li><a tabindex="-1" href="#">Another action</a></li>                         <li><a tabindex="-1" href="#">Something else here</a></li>                         <li class="divider"></li>                         <li><a tabindex="-1" href="#">Separated link</a></li>                     </ul>                 </div>                             </div>                     </div>         <div class="span3">                     <div class="well">                 <div class="dropdown">                     <a class="dropdown-toggle" data-toggle="dropdown" href="#">Link2</a>                     <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel" >                         <li><a tabindex="-1" href="#">Action</a></li>                         <li><a tabindex="-1" href="#">Another action</a></li>                         <li><a tabindex="-1" href="#">Something else here</a></li>                         <li class="divider"></li>                         <li><a tabindex="-1" href="#">Separated link</a></li>                     </ul>                 </div>                             </div>                     </div>     </body>     <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script> </html>
    復(fù)制代碼

    將這段代碼保存復(fù)制到記事本中,將保存成level_locate.html文件,(注意,這個(gè)頁面需要和我們的自動(dòng)化腳本放在同一個(gè)目錄下)瀏覽器打開:

     

      這里自制了一個(gè)頁面,上面有兩個(gè)文字鏈接,點(diǎn)擊兩個(gè)鏈接會(huì)彈出一模一樣的的兩個(gè)下拉菜單,這兩個(gè)菜單的屬性基本一樣。那么我如何區(qū)分找到相應(yīng)的菜單項(xiàng)呢?

     

     

    方法如下:

    復(fù)制代碼
    # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait import time import os  dr = webdriver.Firefox() file_path =  'file:///' + os.path.abspath('level_locate.html') dr.get(file_path)  #點(diǎn)擊Link1鏈接(彈出下拉列表) dr.find_element_by_link_text('Link1').click()  #找到id 為dropdown1的父元素 WebDriverWait(dr, 10).until(lambda the_driver: the_driver.find_element_by_id('dropdown1').is_displayed()) #在父親元件下找到link為Action的子元素 menu = dr.find_element_by_id('dropdown1').find_element_by_link_text('Action')  #鼠標(biāo)定位到子元素上 webdriver.ActionChains(dr).move_to_element(menu).perform()  time.sleep(2)  dr.quit()
    復(fù)制代碼

    定位思路:

    具體思路是:先點(diǎn)擊顯示出1個(gè)下拉菜單,然后再定位到該下拉菜單所在的ul,再定位這個(gè)ul下的某個(gè)具體的link。在這里,我們定位第1個(gè)下拉菜單中的Action這個(gè)選項(xiàng)。

     ---------------------------------------------------------------------

    雖然我每行代碼前叫了注釋,但可能還是不太容易理解,因?yàn)槔锩娑嗔瞬簧僖郧皼]見過的新東東。

    WebDriverWait(dr, 10) 

    10秒內(nèi)每隔500毫秒掃描1次頁面變化,當(dāng)出現(xiàn)指定的元素后結(jié)束。dr就不解釋了,前面操作webdriver.firefox()的句柄

     

    is_displayed()

    該元素是否用戶可以見

     

    class ActionChains(driver)

    driver: 執(zhí)行用戶操作實(shí)例webdriver 

    生成用戶的行為。所有的行動(dòng)都存儲(chǔ)在actionchains對(duì)象。通過perform()存儲(chǔ)的行為。

     

    move_to_element(menu)

    移動(dòng)鼠標(biāo)到一個(gè)元素中,menu上面已經(jīng)定義了他所指向的哪一個(gè)元素

    to_element:元件移動(dòng)到

     

    perform()

    執(zhí)行所有存儲(chǔ)的行為

     ------------------------------需要我們?nèi)粘9ぷ髦屑?xì)細(xì)品味、慢慢消化這些函數(shù)的用法

     

    其實(shí),啰嗦了這么多,我們只是想達(dá)到一種效果,“下拉列表中Action選項(xiàng)處于被選中狀態(tài)”,通過鼠標(biāo)移動(dòng)到選項(xiàng)上就達(dá)到到了這種效果,但通過程序模擬確實(shí)比較麻煩:

     

     

     

    --------------------------

     

    學(xué)習(xí)更多selenium 內(nèi)容:

     

     「功能測試自動(dòng)化」匯總

    posted on 2014-03-17 11:27 順其自然EVO 閱讀(321) 評(píng)論(0)  編輯  收藏 所屬分類: 自動(dòng)化測試python

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

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 性感美女视频免费网站午夜| 免费激情视频网站| 美女黄色免费网站| 亚洲熟妇无码爱v在线观看| 亚洲伊人久久综合中文成人网| 真人做A免费观看| 在线免费观看伊人三级电影| 亚洲精品无码专区在线| 亚洲欧洲精品一区二区三区| 亚洲国产另类久久久精品小说| 国产精品免费_区二区三区观看 | 青苹果乐园免费高清在线| 国产精品区免费视频| 免费无码国产V片在线观看| 亚洲日韩一区二区一无码| 亚洲大香伊人蕉在人依线| 91精品国产亚洲爽啪在线影院| 亚洲人成在线播放网站| 亚洲综合日韩久久成人AV| 中文字幕亚洲一区二区va在线| 亚洲精品线路一在线观看| 免费人妻无码不卡中文字幕18禁| 免费观看的毛片手机视频| 真实乱视频国产免费观看| 成年女人18级毛片毛片免费 | 亚洲综合av永久无码精品一区二区| 免费观看国产小粉嫩喷水| 日本高清免费网站| 日本免费福利视频| 超pen个人视频国产免费观看| 久久精品a一国产成人免费网站| 18国产精品白浆在线观看免费| 1000部啪啪毛片免费看| 免费A级毛片无码A∨免费| 无码人妻精品中文字幕免费东京热| 色老头永久免费网站| 免费无码A片一区二三区| 午夜影视在线免费观看| 免费看小12萝裸体视频国产| 亚洲国产精品视频| 亚洲日韩精品一区二区三区无码 |