使用Robot Framework做UI自动化测试

963 阅读2分钟
原文链接: zhuanlan.zhihu.com

背景

Robot Framework(RF)是一个比较简单易用的自动化测试框架,可以很方便的根据产品需求设计出数据驱动,或者行为驱动的自动化测试框架。此文章以一个简单的RF的UI自动化作为例子,展示如何使用RF开展自动化测试

测试用例:

  1. 打开浏览器,输入http://bing.com
  2. 搜索框输入知乎并提交
  3. 验证搜索到的第一个结果包含知乎

运行环境准备:

  1. pip install robotframework #安装RF
  2. pip install --upgrade robotframework-seleniumlibrary #安装RF的selenium包
  3. 下载chrome驱动(webdriver)到可执行路径

RF脚本内容

*** Settings ***
Documentation     测试必应搜索功能   #注释和说明部分
Library           SeleniumLibrary                        #调用第三方测试库Selenium2Library
Test Teardown     Close All Browsers                      #测试结束之后执行关键字

#变量定义部分
*** Variables ***
${BING URL}      https://cn.bing.com/?mkt=zh-CN
${BROWSER}        Chrome

#测试用例部分
*** Test Cases ***
必应搜索      #测试用例名字
  Open Browser  ${BING URL}  ${BROWSER}
  Input Text    sb_form_q  知乎    #输入搜索文本
  Submit Form    sb_form   #提交表单内容
  sleep  5s
  Element Should Contain  //ol[@id='b_results']//li[1]//div[1]//h2[1]//a[1]//strong[1]  知乎

执行过程:

日志截图:

总结

  1. RF调用的SeleniumLibrary库,因为已经对底层的selenium.webdriver做了二次封装,使用起来非常的方便,在元素定位的时候,可以灵活地使用id,name,xpath等方法进行元素定位。SeleniumLibrary的官方文档有很详细的描述和例子
http://robotframework.org/Selenium2Library/Selenium2Library.htmlrobotframework.org

2.提交表单时候,尝试过click element和click button方法,始终没有办法提交表单内容。后来采用提交表单关键字(Submit Form)或者加enter(\n)解决问题。

3.对搜索结果进行定位时候,没有发现太好的方法,采取绝对路径对(//ol[@id='b_results']//li[1]//div[1]//h2[1]//a[1]//strong[1])取到第一个搜索结果

4.合理利用RF框架的特性可以大大减少UI自动化的测试代码。