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

阿东 · December 04, 2018 · 1002 hits

背景

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自动化的测试代码。
No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up