第六节 设计客户端项目自动化

说明:

    完全的图像识别自动化测试执行方案

原因:

    1 因为window的定位是个非常大的问题,一般来说非常难,而且很多客户端还不允许探索其内部结构

    2 是有几个比较好的库,但是对中文的支持实在是不太友好,未知问题太多了,虽然Sikuli对中文支持也不好,但是有合理解决方案

    3 同时,考虑到学习成本与维护成本,基本上这套执行客户端自动化是最高效的,学习起来非常容易

    4 同时,还可以通过RF的语法来满足很多逻辑性的功能

    5 sikuli的脚本设计与写起来,比其他类型的要更快

一、 环境的依赖

RF+SikuliLibrary

官方文档:http://rainmanwy.github.io/robotframework-SikuliLibrary/doc/SikuliLibrary.html

二、自动化必备的几个功能

点击 -----sikuli关键字Click支持

输入------sikuli支持Input Text与Paste Text两种方式,由于对中文支持不好,一般选择使用paste text

断言------sikuli关键字Wait For Image 、Wait Until Screen Contain ,Wait Until Screen Not Contain等都支持

其他------如鼠标悬浮,拖拽,右键等操作,都可以找到对应的关键字来执行

三、接下来演示实际的效果

    第一步:导入SikuliLibrary库

    第二步:结构设计,其中最为关键的就是image的目录设计,图片的命令规范,方便后期的目标图片维护,所以关键且重要,基本核心就是这里,甚至这里要加入分辨率这个目录,或者版本号的图片目录

    第三步:编写脚本

    1启动客户端(可以使用直接点击快捷键的方式打开,点击关闭按钮方式关闭,也可以采用open/close application来进行)

    2输入用户名

    3 输入密码

    4 点击登录

    5 点击进入课堂(这里分可以进去,不可以进,都要进行断言,我们这里断言截图按钮的出现)

    6 如果截图按钮出现,我们就点击截图

*** Keywords ***Login    Paste text    username.png    xxxxxxx    Paste text    password.png    xxxxxxx    Click    loginbutton.png    Sleep    3
gointo    Click    gointo.png    Wait For Image    getscreenshot.png    username.png    5    Click    getscreenshot.png    sleep    3

更多的案例写法如下:

*** Settings ***
Suite Setup       Start Sikuli Process
Suite Teardown    Stop Remote Server
Resource          login_resource.robot
Library           AutoRecorder    mode=suite

*** Test Cases ***
login
    [Setup]    Add Image Path    F:\\myworkspaces\\rf-letalk\\APP_Test_Tech\\Images\\LoginPage
    Login

gointo
    [Setup]    Add Image Path    F:\\myworkspaces\\rf-letalk\\APP_Test_Tech\\Images\\ListPage
    gointo

logout
    [Setup]    Add Image Path    F:\\myworkspaces\\rf-letalk\\APP_Test_Tech\\Images\\Logout
    logout

get_text
    [Setup]    Add Image Path    F:\\myworkspaces\\rf-letalk\\APP_Test_Tech\\Images\\LoginPage
    ${code}    EVALUATE    tesserocr.file_to_text('Images/LoginPage/logoname.png', lang='chi_sim',psm=8)    modules=tesserocr
    Log    ${code}

tesserocr
    [Setup]    Add Image Path    F:\\myworkspaces\\rf-letalk\\APP_Test_Tech\\Images\\LoginPage
    Get Text    logoname.png

多选
    [Setup]    Add Image Path    F:\\myworkspaces\\rf-letalk\\APP_Test_Tech\\Images\\LoginPage
    ${image_count}    Image Count    select.png    #改成remember.png可以验证识别率的准确度非常高
    Log    ${image_count}
    Click    select.png    #么有好的办法暂时,一般都是百分百匹配
    Click    select.png
    Click    select.png

打开关闭
    Open Application    E:\\Myinstalls\\LeTalk\\LeTalk.exe
    Sleep    10
    #Close Application    #乐桃学园

屏幕数量
    ${screen_count}    Get number of screens
    Log    ${screen_count}

多图片断言
    @{期望的图片}    Create List    wanted_1.png    wanted_2.png
    @{不应该出现的图片}    Create List    not_wanted_1.png    not_wanted_2.png    not_wanted_3.png
    Wait For Multiple Images    10000    10    ${期望的图片}    ${不应该出现的图片}
    # 多图片断言    # 超时时间    # 轮询间隔

获取识别阈值
    [Setup]    Add Image Path    F:\\myworkspaces\\rf-letalk\\APP_Test_Tech\\Images\\LoginPage
    Open Application    E:\\Myinstalls\\LeTalk\\LeTalk.exe
    sleep    5
    ${score}    Get Match Score    select.png
    Log    ${score}

注意事项:

1 每个用例用到的图片不一样,所以要把指定图片路径的方法写在用例上或者测试套件上

2 每次用例的执行完成后,都要执行一个清理动作,回到最初状态,不可以留下缓存之类的

如xx学院的登录,登录后退出,会默认展示上次登录的用户名,为了用例的稳健性,每次执行完都要做一个清除动作

四、关于落地需要研讨的内容:

1 关于分辨率的要解决---(image目录设计的时候就考虑好就可以,一次截图维护,就不需要后续维护,只有UI变更才需要)

2 虽然是图像识别的模式,但是仍然是需要系统权限的,所以执行的时候要注意权限问题

3 持续集成的方便性:非常方便,由于集成到了RF框架里,所以与其他RF的持续集成方案一致

4 识别效果:提供了修改阈值的方法,一方面可以解决识别率的问题,另一方面可以解决分辨率的问题,其实我个人是不看重这个分辨率问题的,因为你落地不会有那么多节点机器给你使用的,我们一般长期在一台node机器或者自己的机器里执行的,即便公司其他同事下载执行,公司电脑也基本一致分辨率,所以根本不是问题

5 由于完全采用图像识别,所以setup与teardown的动作就非常的重要,一定要做到测试前的初始化,测试后的主动退出动作等。

6 测试中必然会产生数据,所以设计脚本的时候,一定不要让产生的数据,影响到脚本的稳健性。

五、其他很好的库,如果有小伙伴想要研究,也是可以用到项目中来的

whitelibrary

FlaUILibrary

pywinauto(偏底层了,可以封装写好,直接rf里调用,相当于重新开发一个rf库了)

....

ps:记得实战

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落入凡尘的鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值