Docker docker + robotframework + selenium grid 做自动化测试

阿东 · 2018年12月04日 · 2007 次阅读

背景

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

测试用例:

  • 打开浏览器,输入 bing.com
  • 搜索框输入知乎并提交
  • 验证搜索到的第一个结果包含知乎 ## 运行环境准备:
  • pip install robotframework # 安装 RF
  • pip install --upgrade robotframework-seleniumlibrary # 安装 RF 的 selenium 包
  • 下载 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]  知乎

执行过程:
enter description here
日志截图:
enter description here

在 docker 里面执行

  1. docker UI 环境的镜像构建参考文章: https://testerhome.com/topics/16605 dockerfile 只需要增加 RF 和相关库的安装
&& sudo pip install robotframework \
&& sudo pip install --upgrade robotframework-seleniumlibrary
  1. 在 Selenium2Library(http://robotframework.org/Selenium2Library/Selenium2Library.html#Open%20Browser)查看 open browser 用法
Open Browser    url, browser=firefox, alias=None, remote_url=False, desired_capabilities=None, ff_profile_dir=None

把 selenium URL 传给 remote_url 参数
例子:

*** Variables ***
${REMOTE_URL}     http://guest.docker:24444/wd/hub #使用镜像里面的selenium grid地址
*** Test Cases ***
Open Browser    ${LOGIN URL}    ${BROWSER}  remote_url=${REMOTE_URL}
  1. 在容器里面运行 RF 测试例子

总结

  • RF 调用的 SeleniumLibrary 库,因为已经对底层的 selenium.webdriver 做了二次封装,使用起来非常的方便,在元素定位的时候,可以灵活地使用 id,name,xpath 等方法进行元素定位。SeleniumLibrary 的官方文档有很详细的描述和例子 http://robotframework.org/Selenium2Library/Selenium2Library.html ​robotframework.org
  • 提交表单时候,尝试过 click element 和 click button 方法,始终没有办法提交表单内容。后来采用提交表单关键字(Submit Form)或者加 enter(\n)解决问题。
  • 对搜索结果进行定位时候,没有发现太好的方法,采取绝对路径对(//ol[@id='b_results']//li[1]//div[1]//h2[1]//a[1]//strong[1])取到第一个搜索结果
  • 合理利用 RF 框架的特性可以大大减少 UI 自动化的测试代码。
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册