手机自动化测试:Appium源码分析之跟踪代码分析七

手机自动化测试:Appium源码分析之跟踪代码分析七

 

   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。poptest推出手机自动化测试的课程,讲解appuim的实际应用,培训全程用商业项目, 大家可以加qq群进行交流:195983133。

 

该模块中定义了36种不同的状态,以及状态的解释信息,还有一个模块方法,这个模块相对简单

36种状态

1个json字符串定义了36个元素,每一元素代表了一个状态,每一个状态有一个名称,然后对应一个json字符串,该json字符串中有code值和summary值:code为整形,summary值为string字符串。

var codes = {

  Success: {

    code: 0,

    summary: 'The command executed successfully.'

  },

  NoSuchDriver: {

    code: 6,

    summary: 'A session is either terminated or not started'

  },

  NoSuchElement: {

    code: 7,

    summary: 'An element could not be located on the page using the given search parameters.'

  },

  NoSuchFrame: {

    code: 8,

    summary: 'A request to switch to a frame could not be satisfied because the frame could not be found.'

  },

  UnknownCommand: {

    code: 9,

    summary: 'The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource.'

  },

  StaleElementReference: {

    code: 10,

    summary: 'An element command failed because the referenced element is no longer attached to the DOM.'

  },

  ElementNotVisible: {

    code: 11,

    summary: 'An element command could not be completed because the element is not visible on the page.'

  },

  InvalidElementState: {

    code: 12,

    summary: 'An element command could not be completed because the element is in an invalid state (e.g. attempting to click a disabled element).'

  },

  UnknownError: {

    code: 13,

    summary: 'An unknown server-side error occurred while processing the command.'

  },

  ElementIsNotSelectable: {

    code: 15,

    summary: 'An attempt was made to select an element that cannot be selected.'

  },

  JavaScriptError: {

    code: 17,

    summary: 'An error occurred while executing user supplied JavaScript.'

  },

  XPathLookupError: {

    code: 19,

    summary: 'An error occurred while searching for an element by XPath.'

  },

  Timeout: {

    code: 21,

    summary: 'An operation did not complete before its timeout expired.'

  },

  NoSuchWindow: {

    code: 23,

    summary: 'A request to switch to a different window could not be satisfied because the window could not be found.'

  },

  InvalidCookieDomain: {

    code: 24,

    summary: 'An illegal attempt was made to set a cookie under a different domain than the current page.'

  },

  UnableToSetCookie: {

    code: 25,

    summary: 'A request to set a cookie\'s value could not be satisfied.'

  },

  UnexpectedAlertOpen: {

    code: 26,

    summary: 'A modal dialog was open, blocking this operation'

  },

  NoAlertOpenError: {

    code: 27,

    summary: 'An attempt was made to operate on a modal dialog when one was not open.'

  },

  ScriptTimeout: {

    code: 28,

    summary: 'A script did not complete before its timeout expired.'

  },

  InvalidElementCoordinates: {

    code: 29,

    summary: 'The coordinates provided to an interactions operation are invalid.'

  },

  IMENotAvailable: {

    code: 30,

    summary: 'IME was not available.'

  },

  IMEEngineActivationFailed: {

    code: 31,

    summary: 'An IME engine could not be started.'

  },

  InvalidSelector: {

    code: 32,

    summary: 'Argument was an invalid selector (e.g. XPath/CSS).'

  },

  SessionNotCreatedException: {

    code: 33,

    summary: 'A new session could not be created.'

  },

  MoveTargetOutOfBounds: {

    code: 34,

    summary: 'Target provided for a move action is out of bounds.'

  },

  NoSuchContext: {

    code: 35,

    summary: 'No such context found.'

  }

};

一个模块方法

 

if (typeof module !== "undefined") {

  //首先将codes所指的json字符串赋值给模块对象codes(可以供外部调用)

  module.exports.codes = codes;

  //然后定义供外部调用的函数getSummaryByCode

  module.exports.getSummaryByCode = function (code) {

    //以10进制来解析code

    code = parseInt(code, 10);

    for (var c in codes) {

      if (typeof codes[c].code !== "undefined" && codes[c].code === code) {

        //根据code值找到对应的summary描述信息

        return codes[c].summary;

      }

    }

    return 'An error occurred';

  };

}

当其他模块加载status模块的时候,该模块自身会检查是否已经初始化过了,如果没有初始化,那就需要执行if方法体的代码。if方法就是将保存36种状态的json字符串串提供给外界,且提供了一个根据code值找到summary值的函数getSummaryByCode。

 

转载于:https://www.cnblogs.com/poptest/p/4962412.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值