zoukankan      html  css  js  c++  java
  • MonkyTalk学习-4-JS脚本修改运行

    JS脚本的修改和运行方面的内容,

    1. 导出脚本

    在录制完成或者通过Table View界面编辑过之后,会自动生成JavaScript脚本,进入JavaScript的Tab下,可以看出如下的结果

    点击Export按钮,会自动生成一个.js文件,内容和在JavaScript 中看到的内容相同。

    2. 能做什么

    If you want to include common programming structures like flow control, loops, and random number generators, then exporting to Javascript is a good way to do so.

    这是官方对于编辑脚本的作用的解释,简单点说,在JS中可以做循环,随机数之类的操作。下面对循环做个例子。

    如图

    load("libs/NewDemo.js");
    NewDemo.Login.prototype.run = function(username, _password) {
        /**
         * @type MT.Application
         */
        var app = this.app;
        
        username = (username != undefined && username != "*" ? username : "<username>");
        password = (password != undefined && password != "*" ? password : "<password>");
    
        app.input("username").enterText(username);
        app.input("password").tap();
        app.input("password").enterText(password);
        app.button("LOGIN").tap();
        app.device().waitFor("10");
        app.button("LOGOUT").tap();
        
    };

    大概的意思是,之前的操作,从csv文件上读取参数值,调用了Login.mt进行登录和退出,现在要做的是,从JS上实现循环N次操作。

    3. 编辑脚本

    导出的js脚本就可以编辑了,加上循环语句。因为也没写过js脚本,挑了个最简单的写了

    load("libs/NewDemo.js");
    NewDemo.Login.prototype.run = function(username, password) {
        /**
         * @type MT.Application
         */
        var app = this.app;
        for(var i =0; i < 5; i ++){
        username = (username != undefined && username != "*" ? username : "<username>");
        password = (password != undefined && password != "*" ? password : "<password>");
    
        app.input("username").enterText(username);
        app.input("password").tap();
        app.input("password").enterText(password);
        app.button("LOGIN").tap();
        app.device().waitFor("10");
        app.button("LOGOUT").tap();
        }
    };

    4. 运行脚本

    如何运行脚本呢?回到我们的Run.mt,如图

    修改图中的MonkeyID中的Login.mt 为 Login 或者Login.js

    连接IDE和模拟器,模拟器启动App是必须的

    然后运行这个Run.mt就可以了。

    经测试,是可以的,确实,在从csv上获得了一组参数之后,就运行了5遍,然后再从csv上获得另外一组参数,再运行五遍,知道三组参数均运行完毕。

    5. 随机数的使用。

    注:以下代码是从官方网站上看到的。自己试了下,确实可以生成随机数。

    if (typeof Test == "undefined") {
        load("libs/NewDemo.js");
    };
    
    NewDemo.Test1.prototype.run = function(usr, pwd) {
        usr = usr || randStr();
        pwd = pwd || randStr();
    
        this.app.input("username").enterText(usr);
        this.app.input("password").enterText(pwd);
        this.app.button("LOGIN").tap();
        this.app.button("LOGOUT").tap();
    };
    
    function randStr()
    {
        var text = "";
        var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    
        for( var i=0; i < 5; i++ )
            text += possible.charAt(Math.floor(Math.random() * possible.length));
    
        return text;
    }
  • 相关阅读:
    最大子数组求和并进行条件组合覆盖测试
    Ubuntu 16.04 c++ Google框架单元测试
    The directory '/home/stone/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If execu
    Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'
    个人博客作业三:微软小娜APP的案例分析
    补交 作业一
    补交 作业二:个人博客作业内容:需求分析
    嵌入式软件设计第12次实验报告
    嵌入式软件设计第11次实验报告
    嵌入式软件设计第10次实验报告
  • 原文地址:https://www.cnblogs.com/kevinqinan/p/4587638.html
Copyright © 2011-2022 走看看