Commit 463cd5e1 authored by Administrator's avatar Administrator

update doc for superAppium

parent b204340e
......@@ -115,3 +115,39 @@ public class MainActivityPageHandler implements PageTriggerManager.ActivityFocus
由刚才的demo可以看到我们操作界面元素的时候出现了一个``ViewImage``,这个即是SuperAppium在Android原生dom上面构建的一层关于DOM tree的抽象模型,他反应的是一个树形结构,包括当前节点的属性、当前节点名称、当前节点的子节点等常规tree mode的概念。同时也有sbling,parent,attribute等系列dom操作相关函数。
ViewImage本身提供树形结构抽象,但是不提供attribute定义。所以在ViewImage底层,存在一个XMode模块,它实现了每个View类型有哪些属性的功能抽象。比如``android.widget.TextView``将会有``text``属性,使用者可以自行扩展,对应的中控函数见:``com.virjar.ratel.api.extension.superappium.xmodel.ValueGetters``
#### XPATH
我们单独为SuperAppium设计了Xpath模块,支持Xpath1.5语法。叫他Xpath1.5的原因是,Ratel设计的Xpath并不完全支持Xpath2.0,主要体现在Xpath 2.0的XmlNamespace并不支持。不过显然namespace对于我们的TreeModel并没有任何意义。
``ViewImage``本身就有一些Xpath相关的函数,看到名字可能你就知道如何使用xpath了。如:``xpath``,``xpath2String``,``xpath2One``,``clickByXpath``,``typeByXpath``
Xpath本身改造我之前外爬虫设计的一套xpath框架[SipSoup](https://gitee.com/virjar/sipsoup) 这个框架设计的时候我大概大学毕业第一年,所以其实有部分代码看起来还是比较稚嫩,在Ratel的RodeMap中还是会对这个模块进行重构。所以XPath语法可以参考SipSoup,以及Xpath语法扩展也可以参考SipSoup。
#### webview自动化
WebView中是一个html环境,Android的DomTree无法感知到WebView的Tree结构,类似Appium在处理WebView的时候需要切换Context一样,在SuperAppium中护理WebView也需要有些特殊调用
```java
WebView webView = root.findWebViewIfExist();
if (webView == null) {
Log.i(HookEntry.TAG, "无法定位登陆WebView...");
return false;
}
WebViewHelper.JsCallFuture jsCallFuture = new WebViewHelper(webView).typeByXpath("//input[@data-componentname='phoneNumber']", GrabTaskBean.userName);
jsCallFuture.success()
.typeByXpath("//input[@data-componentname='password']", GrabTaskBean.password)
.clickByXpath("//input[@type='button' and @value='登录']");
jsCallFuture.failed(new WebViewHelper.OnJsCallFinishEvent() {
@Override
public void onJsCallFinished(String callResultId) {
PageTriggerManager.trigger(400);
}
});
```
WebView的自动化控制主要依靠``com.virjar.ratel.api.extension.superappium.WebViewHelper``,他系统一系列方便的自动化点击函数,也是对Xpath的一些包装。不过这个模块还处于beta阶段,某些js对抗场景卡能不是特别好使
#### demo
关于自动化点击的demo,可以参考[http://git.virjar.com/ratel/ratel-demo/tree/master/crack-snkrs](http://git.virjar.com/ratel/ratel-demo/tree/master/crack-snkrs) demo仅仅实现SuperAppium控制原生元素和控制Webview的功能演示。(申明:这里只是随便找了一个app进行功能演示,并没有真的对对应app进行批量攻击测试,如果app所有者觉得这个demo不是很合适,我们将会对他进行删除)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment