RobotFramework 自動化框架環境搭建及使用


1.RobotFramework自動化框架

  1. 為什么要做自動化?:

    前提:主流程穩定,周期長,腳本可重復利用。

    • 節省人力資源
    • 提高效率
    • 面試需要。。。哈哈
  2. 什么是RobotFramework:

    基於Python的關鍵字驅動的自動化框架。

    • 基於Python:就是由python語言開發的這個框架。
    • 關鍵字驅動:關鍵字驅動測試又稱為表格驅動測試,是自動化測試的一種方法,是數據測試的一種改進方法。關鍵字驅動主要包括測試步驟、測試步驟中的對象,測試對象執行的動作,測試對象需要的數據
    • 自動化框架?:是應用於自動化測試,框架提供可重用的基礎自動化測試平台,提供自動化測試執行和管理功能的組織架構。
  3. pip的常用方法:

    pip 是 Python 包管理工具,該工具提供了對Python 包的查找、下載、安裝、卸載的功能。以下在win10_x64 cmd中操作:

    • 安裝:pip install 包名
      • eg:pip install robotframework
    • 安裝指定版本:pip install 包名==版本號
      • eg:pip install robotframework==1.7.4.1
    • 升級指定包:pip install --upgrade 包名
      • eg:pip install --upgrade robotframework
    • 卸載:pip uninstall 包名
      • eg:pip uninstall robotframework
    • 搜索安裝包:pip search 包名
      • eg:pip search robotframework
    • 查看當前電腦上已經安裝的包:pip list
    • 查看當前電腦上可以升級的包:pip list -o
  4. rf的安裝:

    • 安裝RF自動化框架:pip install robotframework
    • 安裝RF自動化框架IDE:pip install robotframework-ride
    • 安裝wxpython(ride依賴wxpython):pip install wxpython
      • ps:實際上新版本pip在安裝ride時會自動安裝所需依賴,也就是wxpython
    • 版本信息:Win10 x64 + Python 3.7.7 + rf 3.1.2 + ride 1.7.4.1 + wxpython 4.0.7.post2
      • ps:ride 1.x版本不支持Python 3.8及以上,ride 2.x(開發中)支持Python 3.8
    • rf日志中文亂碼解決方法:修改文件 python安裝目錄下 \Lib\site-packages\robotide\contrib\testrunner\testrunnerplugin.py 第 565 行,將 SYSTEM 改成 OUTPUT,重啟ride工具。
  5. 關鍵字:

    • 待續
  6. 元素定位:

    • id:以百度搜索輸入框為例

      <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
      

      RF中寫法:id=kw

    • name:以百度搜索輸入框為例

      <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
      

      RF中寫法:name=wd

    • xpath:Xml Path Language

      • 絕對路徑:從html根部逐級(從上至下)查找

        /html/body/div[1]/div[1]/div[3]/div/div/form/span[1]/input

        RF中寫法:xpath=/html/body/div[1]/div[1]/div[3]/div/div/form/span[1]/input

      • 相對路徑:根據節點的上下文進行查找

        eg://div/form/span/input 這里是在html中找一個div,div里面包含一個form,form包含一個span,span包含一個input,找有這樣一個四層的關系的input標簽,要注意如果html中有多個符合這種層級關系的input,會默認選第一個,也就是說這種方式未必是完全准確的。

        xpath相對定位我們還可以根據元素的屬性來查找:

        eg://div/form/span[1]/input[@type] 這里是找符合這樣一個層級關系並且有'type'這個屬性的input標簽

        RF中寫法:xpath=//div/form/span[1]/input[@type]

        eg://div/form/span[1]/input[@type='submit'] 這里是找符合這樣一個層級關系並且'type'這個屬性的值為'submit'的input標簽

        RF中寫法:xpath=//div/form/span[1]/input[@type='submit']

        eg://div/form/span[1]/input[contains(@type,'sub')] 這里是找符合這樣一個層級關系並且'type'這個屬性的值包含'sub'的input標簽

        RF中寫法:xpath=//div/form/span[1]/input[contains(@type,'sub')]

        以上是根據屬性,如果是下面這樣的a標簽,我們還可以根據鏈接文字來進行定位

        <a href="https://ssxxlive.top">點我</a>
        

        eg://a[contains(text(),'點我')] 這樣就是找所有a標簽並且文字為'點我'的元素了

        RF中寫法:xpath=//a[contains(text(),'點我')]

      • 小技巧:

        Chrome-F12-Console中根據Xpath尋找元素:使用$x(""),引號中填寫xpath路徑,如$x("/html/body/div[1]/div[1]/div[3]/div/div/form/span[1]/input")

    • css

      • id:以百度搜索輸入框為例

        <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
        

        RF中寫法:css=#kw

      • class:以百度搜索輸入框為例

        <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
        

        RF中寫法:css=.s_ipt

      • css根據屬性定位

        <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
        

        [id='kw'] 表示查找id值為'kw'的元素

        [name^='w'] 表示查找name值為'k'開頭的元素

        [class$='ipt'] 表示查找class值為'ipt'結尾的元素

        [autocomplete*='f'] 表示查找autocomplete值中包含'f'的元素

        [id='kw'] [name^='w'] 表示查找id值為'kw'並且name值為'k'開頭的元素

        RF中寫法:css=[id='kw'] [name^='w']、css=[class$='ipt']、

        css=[maxlength='255']、css=[autocomplete='off']

        ps:id和class也是屬性,只是在css中針對id和class多了一種簡單的寫法,如上面的

        css=#kw、css=.s_ipt

      • css根據標簽定位

        1. input

          表示查找當前頁面所有input標簽

          RF中寫法:css=input

        2. a,input

          表示查找當前頁面所有a標簽和input標簽

          RF中寫法:css=a,input

        3. span input

          表示查找span標簽下的所有input標簽,哪怕是span下下級的input

          RF中寫法:css=span input

        4. span>input

          表示查找父元素為span標簽的所有input標簽,注意和span input的區別

          RF中寫法:css=span>input

        5. span+input

          表示查找緊挨在span元素后的第一個input元素

          RF中寫法:css=span+input

        6. span~input

          表示查找緊挨在span元素后的所有input元素

          RF中寫法:css=span~input

        ps:其實大家都知道,因為頁面上只依靠標簽定位的話重復的可能性太大了,所有我們可以采用 標簽 + 屬性 的方式來進行定位

        ​ 例如 span>input[id='kw'][name^='w'] 意思是查找所有父標簽為span的input標簽,並且該標簽中有屬性id的值為kw且屬性name的值為w開頭

        ​ 在RF中寫法:css=span>input[id='kw'][name^='w']

      • 小技巧:

        Chrome-F12-Console中根據css尋找單個元素:

        ​ 使用$(""),引號中填寫css選擇器,如$("span>input[id='kw'][name^='w']")

        Chrome-F12-Console中根據css尋找多個元素:

        ​ 使用$$(""),引號中填寫css選擇器,如$$("span>input[id='kw'][name^='w']")


免責聲明!

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



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