MonkeyTalk的JavaScript API

JavaScript脚本

输出成JavaScript脚本是monkeytalk常用的工具。通常包括循环,控制语句,和随机数。

导出JavaScript脚本:生成MonkeyTalk脚本,点击“JavaScript”按钮,再点击“Export”按钮,MonkeyTalk将会生成.js文件,该文件名与.mt文件名相同。

执行Monkeytalk-js脚本,像执行普通的MonkeyTalk脚本一样:

Script Login.js Run

也可以不要文件扩展名,缺省扩展名,通常默认是运行.js脚本:

Script Login Run

一旦MonkeyTalk脚本导出成js脚本,用户就可以任意编辑。例如,有个脚本,在没有指定用户名和密码的时候,随机输入用户名和密码:

if (typeof Test == "undefined") {

         load("libs/Test.js");

};

 

Test.Login.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();

};

 

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;

}

 

Javascript Wrapper Library(JavaScript包装库)

每次保存.mt文件时,MonkeyTalk IDE都会生成一个js脚本的包装函数,以便可以直接准确的找到js脚本。这个生成的库文件,命名是YourProjectName.js,并且放在工程的libs目录下。该libs目录下同时也包含MonkeyTalk js API文件,名为MonkeyTalkAPI.js。

例如,下面的脚本:

# enterName.mt
Vars name="foo"
Input name EnterText ${name}
Button OK Tap

保存enterName.mt时,一个js方法被生成,可以这样写:

this.app.enterName().run("bar")

或者

this.app.enterName().runWith("somedata.csv")

一个“call”方法也被生成,可以用来明确定义想要的参数(协助IDE完成命令),以便this.app.enterName().call("foo") 可以使用。

 

自定义命令同样产生包装。

// Call user.login.mt
this.app.user("ethel").login("secret123");

 

使用JavaScript API

MonkeyTalk可以不用Run或RunWith,就可以调用js。

用js编写MonkeyTalk脚本必须在开始位置加载工程的包装库。

load("libs/YourProjectName.js")

每个MonkeyTalk命令可以通过下面这种方式被js使用:

this.app.componentType("monkeyId").action(args...)

加载库创建的属性叫做this.app,这是一个在被测试之前引用的对象。this.app根据控件类型来提供方法。对每个控件类型(包括用户自定义的)而言,方法被定义为控件的名称(如:“button”、“radioButtons”)。用monkeyID检索匹配的控件,来调用这些方法。

举例查找控件:

// The OK Button
this.app.button("OK")
// The first table
this.app.table("#1")

一旦匹配上一个控件,你可以执行相应的操作。

每个控件有相应的可用的操作:

// Button OK Tap
this.app.button("OK").tap()
// Table countries Select France
this.app.table("countries").select("France")

JavaScriptAPI类比MonkeyTalk命令语法:

// Input name EnterText Bob
this.app.input("name").enterText("Bob")

 

Timeout and Thinktime

timeout和thinktime是特定的属性,是js的可选项,包含在操作的字符串值参数中。

this.app.button("ok").tap({timeout:5000})

this.app.input("name").verify("foo",{timeout:5000})

Verify Commands

this.app.label("message").verify("Hello")

Calling MonkeyTalk from JavaScript(通过js调用MonkeyTalk)

可以在this.app后边加任何脚本的名称,作为一个方法,来调用该脚本。

this.app.scriptName().run(args...)

RunWith同样支持:

this.app.script("scriptName").runWith("somedata.csv");

Calling Custom Commands(调用自定义命令)

// Call user.login.mt
// User ethel Login secret123

this.app.user("ethel").login("secret123") 


JavaScript API 参考(以下没有翻译,繁琐但简单易懂,以备用到的时候查阅)

(说明: select(value:String):void 解读:string和void为类型,举例为:select("OK"))

所有的控件继承自View,因此会继承View的操作。

大多数时候,你导出一个js脚本,MonkeyTalk脚本会被一对一的关联,比如:

"Button LOGIN Tap"将被转换为 "this.app.input("LOGIN").tap();"

Button

ButtonSelector

·        select(value:String):void - Select an item by value.

·        value - the value of the item to select.

·        selectIndex(itemNumber:int):void - Selects anitem by index.

·        itemNumber - the index of the item to select.

·        longSelectIndex(itemNumber:int):void - Long press anitem by index.

·        itemNumber - the index of the item to long press.

 

CheckBox

 

DatePicker

·        enterDate(date:String):void - Change the current date value.

·        date - A date with the format YYYY-MM-DD where YYYY isthe year, MM is the month (01-12), and DD is the day (01-31).

 

Device

·        shake():void - Shake the device.

·        rotate(direction:String):void - Change the device orientation.

·        direction - Left or Right (case insensitive)

·        back():void - Navigate back. iOS: Pops the currentUINavigationItem (if there is one). 
Android: Presses the hardware device key.

·        forward():void - Navigate forward. iOS: Pushes thenext UINavigationItem, if there is one. Android: ignored.

·        search():void - Press the search key. iOS:ignored. Android: Presses the device search key.

·        menu():void - Press the menu key. iOS: ignored. Android:Presses the device menu key.

 

Doc

·        vars(args:String):void - Document the named variables usedin the script.

·        args - the named variables and their doc, in the formof: var='some doc' var2='other doc'

·        script(doc:String):void - Document the script itself.

·        doc - the doc

 

IndexedSelector

·        selectIndex(itemNumber:int):void - Selects anitem by index.

·        itemNumber - the index of the item to select.

·        longSelectIndex(itemNumber:int):void - Long press anitem by index.

·        itemNumber - the index of the item to long press.

 

Input

·        enterText(text:String, hitDone:boolean):void - Enter textinto the input field.

·        text - the text to enter

·        hitDone - iOS: if true, hit Done key after entering text. Android:ignored.

·        clear():void - Clear text from the input field. iOS: Clears thefield. Android: ignored.

 

ItemSelector

·        select(value:String):void - Select an item by value.

·        value - the value of the item to select.

·        selectIndex(itemNumber:int):void - Selects anitem by index.

·        itemNumber - the index of the item to select.

·        longSelectIndex(itemNumber:int):void - Long press anitem by index.

·        itemNumber - the index of the item to long press.

 

Lable

 

Menu

·        select(value:String):void - Select an item by value.

·        value - the value of the item to select.

·        selectIndex(itemNumber:int):void - Selects anitem by index.

·        itemNumber - the index of the item to select.

·        longSelectIndex(itemNumber:int):void - Long press anitem by index.

·        itemNumber - the index of the item to long press.

 

NumericSelector

·        select(value:float):void - Select a numeric component value

·        value - the value to select

 

RatingBar

·        select(value:float):void - Select a numeric component value

·        value - the value to select

 

Script

·        run(args:String):String - Run the script with the givenargs.

·        args - the arguments

·        runWith(args:String):void - Data-drive the test script withthe given CSV data file.

·        args - the arguments (where the first arg is the datafile filename)

 

Scroller

scroll(x:int, y:int):void - Scroll to thespecified coordinates.

·        x - the x-coordinate (horizontal)

·        y - the y-coordinate (vertical

 

Setup

·        run(args:String):String - Run the setup script with thegiven args.

·        args - the arguments

·        runWith(args:String):void - Data-drive the setup script withthe given CSV data file.

·        args - the arguments (where the first arg is the datafile filename)

 

Slider

·        select(value:float):void - Select a numeric component value

·        value - the value to select

 

TabBar

·        select(value:String):void - Select an item by value.

·        value - the value of the item to select.

·        selectIndex(itemNumber:int):void - Selects anitem by index.

·        itemNumber - the index of the item to select.

·        longSelectIndex(itemNumber:int):void - Long press anitem by index.

·        itemNumber - the index of the item to long press.

 

Table

·        selectRow(row:int, section:int):void - Select a row.

·        row - the row to select

·        section - the section containing the row. (Ignored onAndroid)

·        scrollToRow(row:int, section:int):void - Scroll to arow by row number.

·        row - the row to select

·        section - the section containing the row. (Ignored onAndroid)

·        scrollToRow(value:String):void - Scroll to arow by value.

·        value - the value of the row to scroll to.

·        setEditing(enabled:boolean):void -Enable/disable table editing. iOS: Enabled editing mode for table. Android:ignored.

·        enabled - if true, enable editing, else disable editing.

·        insert(row:int, section:int):void - Insert a rowinto the table. iOS: Inserts a row. Android: Ignored.

·        row - the index of the row after which to insert a newrow.

·        section - the section containing the row.

·        remove(row:int, section:int):void - Remove a rowfrom the table. iOS: Deletes the row. Android: Ignored.

·        row - the index of the row to be removed.

·        section - the section containing the row.

·        move(from:int, to:int):void - Move a row. iOS: Moves a row.Android: Ignored.

·        from - the index of the row to be moved.

·        to - the destination row for the move.

·        select(value:String):void - Select an item by value.

·        value - the value of the item to select.

·        selectIndex(itemNumber:int):void - Selects anitem by index.

·        itemNumber - the index of the item to select.

·        longSelectIndex(itemNumber:int):void - Long press anitem by index.

·        itemNumber - the index of the item to long press.

 

Teardown

·        run(args:String):String - Run the teardown script with thegiven args.

·        args - the arguments

·        runWith(args:String):void - Data-drive the teardown scriptwith the given CSV data file.

·        args - the arguments (where the first arg is the datafile filename)

 

Test

·        run(args:String):String - Run the test script with the givenargs.

·        args - the arguments

·        runWith(args:String):void - Data-drive the test script withthe given CSV data file.

·        args - the arguments (where the first arg is the datafile filename)

 

TextArea

·        enterText(text:String, hitDone:boolean):void - Enter textinto the input field.

·        text - the text to enter

·        hitDone - iOS: if true, hit Done key after entering text.Android: ignored.

·        clear():void - Clear text from the input field. iOS: Clears thefield. Android: ignored.

 

Toggle

ToolBar

·        selectIndex(itemNumber:int):void - Selects anitem by index.

·        itemNumber - the index of the item to select.

·        longSelectIndex(itemNumber:int):void - Long press anitem by index.

·        itemNumber - the index of the item to long press.

 

Vars

·        define(args:String):void - Define the named variables used inthe script.

·        args - the named variables (and optional default value),in the form of: var1 var2=default

 

VideoPlayer

·        play():void - Play the video from the current playback point.

·        pause():void - Stop the video at the current playback point.

·        stop():void - Stop the video and set playback to the startingpoint.

 

View

·        verify(expectedValue:String, propPath:String,failMessage:String):void 
- Verifies that a property of the component has some expected value.

·        expectedValue - the expected value of theproperty. If null, verifies the existence of the component.

·        propPath - the property name or property path expression(defaults to 'value')

·        failMessage - the custom failure message

·        verifyNot(expectedValue:String, propPath:String,failMessage:String):void 
- Verifies that a property of the component does not have some value.

·        expectedValue - the value the component shouldn'thave. If null, verifies the non-existence of the component.

·        propPath - the property name or property path expression(defaults to 'value')

·        failMessage - the custom failure message

·        verifyRegex(regex:String, propPath:String,failMessage:String):void 
- Verifies that a property of the component matches some regular expression.

·        regex - the regular expression to match

·        propPath - the property name or property path expression(defaults to 'value')

·        failMessage - the custom failure message

·        verifyNotRegex(regex:String, propPath:String,failMessage:String):void 
- Verifies that a property of the component does not have a value matching aregular expression.

·        regex - the regular expression that should not match.

·        propPath - the property name or property path expression(defaults to 'value')

·        failMessage - the custom failure message

·        verifyWildcard(wildcard:String, propPath:String,failMessage:String):void 
- Verifies that a property of the component matches some wildcard expression.

·        wildcard - the wildcard expression to match

·        propPath - the property name or property path expression(defaults to 'value')

·        failMessage - the custom failure message

·        verifyNotWildcard(wildcard:String, propPath:String,failMessage:String):void 
- Verifies that a property of the component does not have a value matching somewildcard expression.

·        wildcard - the wildcard expression that should not match

·        propPath - the property name or property path expression(defaults to 'value')

·        failMessage - the custom failure message

·        tap():void - Taps on the component. On Android, plays a'click'. On iOS, plays a 
TouchDown/TouchMove/TouchUp sequence.

·        longPress():void - Performs a long press on thecomponent. On Android, plays a 'longClick'. On iOS, plays a longPush gesture.

·        touchDown(x:int, y:int):void - Start touching the component.

·        x - x-coordinate of the touch

·        y - y-coordinate of the touch

·        touchMove(coords:int):void - Drag across the component

·        coords - one or more (x,y) coordinate pairs specifying thepath of the drag gesture

·        touchUp(x:int, y:int):void - Stop touching the component.

·        x - x-coordinate of where touch is released

·        y - y-coordinate of where touch is released

·        pinch(scale:float, velocity:float):void - Pinch thecomponent.

·        scale - The scale factor relative to the points of thetwo touches in screen coordinates

·        velocity - The velocity of the pinch in scale factor persecond (read-only)

·        swipe(direction:String):void - Swipe the component.

·        direction - Left, Right, Up, or Down (case insensitive)

·        drag(x1:int, y1:int, x2:int, y2:int):void - Touch down,drag across the component, then up

·        x1 - starting x-coordinate

·        y1 - starting y-coordinate

·        x2 - ending x-coordinate

·        y2 - ending y-coordinate

·        get(variable:String, propPath:String):String 
- Gets the value of the given property from the component, and set it into thegiven variable name.

·        variable - the name of the variable to set

·        propPath - the property name or path expression (defaults to'value')

·        exec(method:String, args:String):String 
- Call a method on a component. The method must take zero or more Stringarguments and return a String result.

·        method - the method to call

·        args - the String args to be supplied to the method



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值