• 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']")

  • 相关阅读:
    Java字符串(String类)
    Java异常处理
    Scanner使用方法
    OOP之重载
    构造函数和析构函数
    类、对象、方法
    函数
    数组
    ahk之路:利用ahk在window7下实现窗口置顶
    指针的问题
  • 原文地址:https://www.cnblogs.com/tchzero/p/12515785.html
Copyright © 2020-2023  润新知