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

  

  appium server的源码文件为bin和lib两个文件夹,但是bin目录为可执行文件,直接进入lib目录下就行,通过package.json里main字段我们了解程序的入口文件为lib/server/main.js,ok我们从这个文件开始。

 main.js

我们一步一步来分析这个文件。我采用的是eclipse的debug方式来debug我们的程序。 
首先我们以debug-brk的方式启动程序:

E:\appium>node --debug-brk=9222 .

Debugger listening on port 9222

ok,这个时候程序会以debug模式启动,监听9222的端口,且会停留在源文件的第一行等待调试。ok,这个时候我们在eclipse中启动V8调试

 

点击Debug后,进入调试模式:

程序停留在main.js文件的第一行,这个时候我们会发现这个main.js比我们直接打开main.js多了一行代码:

(function (exports, require, module, __filename, __dirname)

这个是nodejs内部的加载机制,它会每一个本地文件包裹上这么一个函数,只要知道这些就行,其他的和正常打开该文件的代码都是一样的。我们现在进入正题。

严格模式

在nodejs中有一套规范叫严格模式,它是前人总结的一套nodejs程序编写规范,旨在提高node.js代码的可读性以及降低维护成本等。通常在文件的开头用下面语句标识:

"use strict";

 

初始化

 

var parser = require('./parser.js')()

  , logFactory = require('./logger.js')

  , logger = null

  , args = null

  , fs = require('fs')

  , path = require('path')

  , noPermsCheck = false;

 

require('colors');

上面的语句为初始化模块、变量的语句,以./开头的是本地模块,还有一种是核心模块,就是不以/标识的模块,比如上面的fs、path、colors模块。各个变量的意义:

变量名

意义

parser

加载自本地模块,是一个参数解析器,我们会在parser.js中详细介绍

logFactory

log工厂类

logger

log器

args

参数集合

fs

文件模块,核心模块

path

路径模块,核心模块

noPermsCheck

boolean值,是否省略权限检查,默认为false,需要检查权限