appium-desktop录制脚本二次开发,生成我司自动化脚本

目的

 通过对appium-desktop脚本录制功能进行二次开发,使录制的java脚本符合我司自动化框架要求。

实现步骤

1、增加元素名称的输入框

     由于ATK(我司自动化测试框架)脚本中元素是以“app-page-element”的方式定位元素,所以需要用户输入page名称和element名称,并保存到数据库中。

1.1、实现方案

      在现有的Tap、Send Keys、Clear操作上增加元素输入框操作,如图

appium-desktop录制脚本二次开发,生成我司自动化脚本

1.2、代码修改

1.2.1、修改onClick方法

 修改Inspector/SelectedElement.js 中tab、Tap、Send Keys、Clear的onClick方法,修改为通过在actions/Inspector.js中新增showSendElementNameModal()方法来控制弹出框, 该方法会把type设置为

SHOW_SEND_ELEMENT_NAME_MODAL, 在reducers/Inspector.js中中新增switch-case的一个分支,来设置sendElementNameModalVisible=true

appium-desktop录制脚本二次开发,生成我司自动化脚本

   

export function showSendElementNameModal () {
return (dispatch) => {
dispatch({type: SHOW_SEND_ELEMENT_NAME_MODAL});
};
}
case SHOW_SEND_ELEMENT_NAME_MODAL:
return {
...state,
sendElementNameModalVisible: true

};

 

1.2.2、增加输入框

 新增输入element的输入框,当sendElementNameModalVisible=true时该输入框显示,点击OK时,调用新增的handleSendElementName()方法,进行元素的获取和这是输入框隐藏

appium-desktop录制脚本二次开发,生成我司自动化脚本 

 

 

handleSendElementName () {
const {sendElementName, applyClientMethod, hideSendElementNameModal, selectedElementId: elementId} = this.props;
applyClientMethod({methodName: ‘click‘, elementId});
hideSendElementNameModal();---同showSendElementNameModal()方法
}

2、保存元素名称到数据库

      表单提交元素名称后,需要把元素名称保存到数据库中,

2.1、实现方案

       使用react已经引入JQuery的网络请求方案。通过POST方式把数据提交到数据库中

2.2、代码修改

    Framework.js是各个语言录制脚本(java.js、python.js、ruby.js等)的父类。所以在Framework.js中进行数据库的统一添加

2.2.1、传参修改

    Framework.js 的getCodeString()方法 增加sendElementName参数。通过RecordedActions传递过来。代码修改如下

appium-desktop录制脚本二次开发,生成我司自动化脚本

2.2.2、post请求

其中page、element、expectedvalue需要用户填写,其它值可以通过代码获取。
postJSON() {
var obj = { "app":"guanjia", "element":‘aaaa‘, "expectedimg":"bbbb","expectedvalue": "cccc","os": "Android","page": "eeee","type": "id","value": "rwa"};--测试数据
const req = new XMLHttpRequest()
req.open(‘POST‘, ‘http://10.247.39.5:7070/wisper/api/v1/atk/appium/elementinfo‘)
req.setRequestHeader(‘Content-Type‘, ‘application/json;charset=UTF-8‘)
req.send(JSON.stringify(obj))
}

 


getCodeString (includeBoilerplate = false,sendElementName) {--新增sendElementName参数
  this.postJSON();----增加对提交数据方法的调用
let str = ‘‘;
for (let {action, params} of this.actions) {

............

............

...........

}

3、修改录制脚本

 每个语言都有一个js,我们主要修改java.js. 把return 结果改为ATK格式即可。

appium-desktop录制脚本二次开发,生成我司自动化脚本

appium-desktop录制脚本二次开发,生成我司自动化脚本

上一篇:js巧用apply方法实现数组最值以及合并


下一篇:iOS push