UNPKG

wda

Version:

Facebook WebDriverAgent Client

305 lines (227 loc) 5 kB
# wda 中文文档 [English document](https://github.com/zzyss86/wda) > Author: jsonzhou 2018/01/01 Facebook WebDriverAgent Client,针对Facebook WebDriverAgent的node.js客户端,发布在npm。 ## 安装 1. 你需要先安装`WebDriverAgent` Facebook WebDriverAgent主页: <https://github.com/facebook/WebDriverAgent> 2. 安装`wda` ``` npm install wda ``` ## 使用 ``` const wda = require('wda'); let client = wda.client(); //default: http://localhost:8100 //or //let client = wda.client('http://192.168.x.x:8100'); ``` > 注意:以下所有接口都是同步返回JSON对象。 ## 检查`WebDriverAgent`服务状态 ``` client.status; //return JSON object ``` ## 会话处理 ### 开启一个会话并启动指定APP ``` client.launchApp(bundleId); //client.launchApp('com.apple.mobilesafari'); ``` ### 查询指定会话 ``` client.getSessionInfo(sessionId); //client.getSessionInfo('DB2EFA4B-4DA3-455D-B7B5-867B59B273D4'); ``` ### 移除会话并杀掉应用 ``` client.removeSession(sessionId); //client.removeSession('DB2EFA4B-4DA3-455D-B7B5-867B59B273D4'); ``` ## 应用相关操作 ### 触发`HOME键`,回到主桌面 ``` client.homeScreen(); ``` ### 截屏 返回Base64的图片编码 ``` client.screenshot(); //return base64 image ``` ### 指定时间(秒)让应用退到后台 ``` /** * Deactivate application for given time * @param sessionId * @param duration second * */ client.deactivateApp(sessionId, duration); //client.deactivateApp('C85A76E4-690D-4C7D-AEBA-C386263801C5',3); ``` ### 改变设备屏幕方向 **目前只支持这几种屏幕方向:** - PORTRAIT - LANDSCAPE - UIA_DEVICE_ORIENTATION_LANDSCAPERIGHT - UIA_DEVICE_ORIENTATION_PORTRAIT_UPSIDEDOWN ``` /** * Change device orientation * @param orientation * */ client.orientation(sessionId,orientation); //client.orientation('C85A76E4-690D-4C7D-AEBA-C386263801C5','LANDSCAPE'); ``` ### Source aka tree ``` /** * source aka tree * @param format default:xml, format=json || xml * */ client.source(format); //client.source('json'); ``` ## 查找元素 你可以用以下方式查找元素 * property with given value (`link text`) ``` /* * property with given value (link text) * @param sessionId * @param value, for example: label=Apple * */ client.linkText(sessionId,value); ``` * property with given partial value (`partial link text`) ``` /** * property with given partial value (partial link text) * @param sessionId * @param value, for example: label=App * */ client.partialLinkText(sessionId,value); ``` * using `class name` ``` /** * using class name * @param sessionId * @param value, for example: XCUIElementTypeButton * */ client.className(sessionId,value); ``` * using `xpath` ``` /** * using xpath * @param sessionId * @param value, for example: //XCUIElementTypeButton[@name='Share'] * * It is not recommended to use xpath queries, since they are not supported by XCTest natively and therefore are slow. Replace them with faster query types if possible. * */ client.xpath(sessionId,value); ``` * using `predicate string` ``` /** * using predicate string * @param sessionId * @param value, for example: wdVisible==1 * * Predicate Queries Construction Rules:https://github.com/facebook/WebDriverAgent/wiki/Predicate-Queries-Construction-Rules * */ client.predicateString(sessionId,value) ``` * using `class chain` ``` /** * class chain * @param sessionId * @param value * * Class Chain Queries Construction Rules:https://github.com/facebook/WebDriverAgent/wiki/Class-Chain-Queries-Construction-Rules * */ client.classChain(sessionId,value); ``` ## 元素交互 ### 查询指定元素属性值 ``` /** * Querying properties * @param sessionId * @param elementId * @param attribute: query properties like enabled, rect, size, location, text, displayed, accessible, name e.g. * */ client.properties(sessionId,elementId,attribute); ``` ### 点击元素 ``` /** * Tapping element * @param sessionId * @param elementId * */ client.click(sessionId,elementId); ``` ### 输入文本 ``` /** * Typing text * @param sessionId * @param elementId * @param textArray for example: ['h','t','t','p'] * */ client.typingText(sessionId,elementId,textArray); ``` ### 清除文本 ``` /** * Clearing text * @param sessionId * @param elementId * */ client.clearText(sessionId,elementId); ``` ## Alerts警告对话框 ### 获取警告对话框 ``` /** * Get alert * @param sessionId * */ client.getAlert(sessionId); ``` ### 接受警告对话框 ``` /** * Accept alert * @param sessionId * */ client.acceptAlert(sessionId); ``` ### 禁用警告对话框 ``` /** * Dismiss alert * @param sessionId * */ client.getAlert(sessionId); ``` ## Touch ID ### 匹配TouchID ``` /** * Match TouchID * @param sessionId * */ client.matchTouchID(sessionId); ``` ### 不匹配TouchID ``` /** * Do not match TouchID * @param sessionId * */ client.notMatchTouchID(sessionId); ```