zoukankan      html  css  js  c++  java
  • 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安装目录下 Libsite-packages obotidecontrib estrunner estrunnerplugin.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']")

  • 相关阅读:
    ZOJ 2158 Truck History
    Knight Moves (zoj 1091 poj2243)BFS
    poj 1270 Following Orders
    poj 2935 Basic Wall Maze (BFS)
    Holedox Moving (zoj 1361 poj 1324)bfs
    ZOJ 1083 Frame Stacking
    zoj 2193 Window Pains
    hdu1412{A} + {B}
    hdu2031进制转换
    openjudge最长单词
  • 原文地址:https://www.cnblogs.com/tchzero/p/12515785.html
Copyright © 2011-2022 走看看