51Testing软件测试论坛

标题: 在 robot framework 上封装 nodecv-server 的视觉判断关键字 [打印本页]

作者: 草帽路飞UU    时间: 2017-6-28 09:27
标题: 在 robot framework 上封装 nodecv-server 的视觉判断关键字
关键字封装
  1. opencv连接接口服务
  2.     [Documentation]    根据API配置中接口服务器地址:${opencv_server_url}  连接接口服务
  3.     create session    opencv    ${opencv_server_url}

  4. opencv关闭接口服务连接
  5.     [Documentation]    关闭所有服务  
  6.     delete all sessions

  7. opencv_dissimilarity
  8.     [Arguments]    ${image1}    ${image2}
  9.     [Documentation]   差异度   dissimilarity 的值 越小 差异 越小
  10.     ...    ${image1}    ./image/macaca.png  图片名称只能使用字母数字及下划线
  11.     ...    ${image2}    ./image/macaca_logo.png
  12.     ${image1}    _图片信息拼装    ${image1}
  13.     ${image2}    _图片信息拼装    ${image2}
  14.     ${files}    create dictionary    image1=${image1}    image2=${image2}
  15.     ${addr}    post request    opencv    ${POST_diss}    files=${files}
  16.     should be equal as strings    ${addr.status_code}    200
  17.     ${responsedata}    to json    ${addr.content}
  18.     log    ${responsedata}
  19.     [Return]    ${responsedata}

  20. opencv_matchtemplate
  21.     [Arguments]    ${image1}    ${image2}
  22.     [Documentation]
  23.     ...    ${image1}    ./image/macaca.png   被匹配标记的大图
  24.     ...    ${image2}    ./image/macaca_logo.png    为需要匹配的小图,
  25.     ...                  最好是颜色较深的 图片 带文字效果不好,获取小图在大图中的位置(坐标信息)
  26.     ${image1}    _图片信息拼装    ${image1}
  27.     ${image2}    _图片信息拼装    ${image2}
  28.     ${files}    create dictionary    image1=${image1}    image2=${image2}
  29.     ${addr}    post request    opencv    ${POST_match}    files=${files}
  30.     should be equal as strings    ${addr.status_code}    200
  31.     ${responsedata}    to json    ${addr.content}
  32.     log    ${responsedata}
  33.     [Return]    ${responsedata}

  34. opencv_cascadedetect
  35.     [Arguments]    ${image1}    ${image2}
  36.     [Documentation]
  37.     ...    ${image1}    ./image/macaca.png
  38.     ...    ${image2}    ./image/macaca_logo.png
  39.     ${image1}    _图片信息拼装    ${image1}
  40.     ${image2}    _图片信息拼装    ${image2}
  41.     # ${image1}    evaluate    ('image1', open('${image1}', 'rb'))
  42.     # ${image2}    evaluate    ('image2', open('${image2}', 'rb'))
  43.     ${files}    create dictionary    image1=${image1}    image2=${image2}
  44.     ${addr}    post request    opencv    ${POST_casca}    files=${files}
  45.     should be equal as strings    ${addr.status_code}    200
  46.     ${responsedata}    to json    ${addr.content}
  47.     log    ${responsedata}
  48.     [Return]    ${responsedata}

  49. opencv_findpairs
  50.     [Arguments]    ${image1}    ${image2}
  51.     [Documentation]
  52.     ...    ${image1}    ./image/macaca.png   图片名称只能使用字母数字及下划线
  53.     ...    ${image2}    ./image/macaca_logo.png
  54.     ${image1}    _图片信息拼装    ${image1}
  55.     ${image2}    _图片信息拼装    ${image2}
  56.     ${files}    create dictionary    image1=${image1}    image2=${image2}
  57.     ${addr}    post request    opencv    ${POST_findpairs}    files=${files}
  58.     should be equal as strings    ${addr.status_code}    200
  59.     ${responsedata}    to json    ${addr.content}
  60.     log    ${responsedata}
  61.     [Return]    ${responsedata}

  62. _图片信息拼装
  63.     [Arguments]    ${image}
  64.     # ${i_name}    get image name    ${image}
  65.     # ${i_type}    get image type    ${i_name}
  66.     ${i_name}    evaluate    re.search('\\w+\\.\\w+','${image}').group()    re
  67.     ${i_type}    evaluate    re.search('\\.\\w+','${i_name}').group()    re
  68.     ${i_type}    Set Variable    ${i_type[1:]}
  69.     ${image}    evaluate    ('${i_name}', open('${image}', 'rb'), 'image/${i_type}', {'Expires': '0'})
  70.     [Return]    ${image}
复制代码
关键字应用
  1. 8dol点击我的_微信登录
  2.     8dol_app_点击进入_登录引导页_微信登录
  3.     8dol_app_等待加载_微信登录页
  4.     sleep    1
  5.     ${image}    PK_8dol截屏    wechat_login
  6.     ${responsedata}    opencv_matchtemplate    ${image}    image/wechat_login.png   
  7.     log    ${responsedata}
  8.     ${match}    get from dictionary    ${responsedata}    match
  9.     ${x_center}    evaluate    float(${match[1]})+float(${match[3]})/2
  10.     ${y_center}    evaluate    float(${match[2]})+float(${match[4]})/2
  11.     PK_点击_坐标    ${x_center}    ${y_center}              #点击确认登录按钮
复制代码



作者: 乐哈哈yoyo    时间: 2017-6-28 15:42
我看到了“最好是”、“效果不好”
作者: 草帽路飞UU    时间: 2017-6-28 15:43
乐哈哈yoyo 发表于 2017-6-28 15:42
我看到了“最好是”、“效果不好”

呵呵 在我们app上用 效果 确实不太好!
不过还是有些场景可以用
在调用微信登录时, 正好用上




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2