Commit 8147e17a authored by Administrator's avatar Administrator

udpate

parent f0dc02a6
......@@ -14,7 +14,7 @@ import java.io.IOException;
import java.io.StringWriter;
public class SuperAppiumDumper {
public static String dumpToXml(ViewModel viewModel) {
public static String dumpToXml(ViewImage viewImage) {
try {
XmlSerializer serializer = Xml.newSerializer();
StringWriter stringWriter = new StringWriter();
......@@ -22,7 +22,7 @@ public class SuperAppiumDumper {
serializer.startDocument("UTF-8", true);
serializer.startTag("", "hierarchy");
serializer.attribute("", "comment", "dumped by super-appium, notice this not compatible with uiautomator");
dumpNodeRec(viewModel, serializer);
dumpNodeRec(viewImage, serializer);
serializer.endTag("", "hierarchy");
serializer.endDocument();
return stringWriter.toString();
......@@ -32,7 +32,7 @@ public class SuperAppiumDumper {
return null;
}
private static void dumpNodeRec(ViewModel node, XmlSerializer serializer) throws IOException {
private static void dumpNodeRec(ViewImage node, XmlSerializer serializer) throws IOException {
String tag = String.valueOf(node.attribute(Constants.className));
serializer.startTag("", tag);
for (String attrKey : node.attributeKeys()) {
......@@ -48,7 +48,7 @@ public class SuperAppiumDumper {
int count = node.childCount();
for (int i = 0; i < count; i++) {
ViewModel child = node.childAt(i);
ViewImage child = node.childAt(i);
if (child != null) {
dumpNodeRec(child, serializer);
} else {
......@@ -59,13 +59,13 @@ public class SuperAppiumDumper {
serializer.endTag("", tag);
}
public static String dumpToJson(ViewModel viewModel) {
public static String dumpToJson(ViewImage viewImage) {
JSONObject jsonObject = new JSONObject();
dumpNodeRec(viewModel, jsonObject);
dumpNodeRec(viewImage, jsonObject);
return jsonObject.toString();
}
private static void dumpNodeRec(ViewModel node, JSONObject container) {
private static void dumpNodeRec(ViewImage node, JSONObject container) {
for (String attrKey : node.attributeKeys()) {
Object value = node.attribute(attrKey);
if (value == null) {
......@@ -83,7 +83,7 @@ public class SuperAppiumDumper {
}
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < count; i++) {
ViewModel child = node.childAt(i);
ViewImage child = node.childAt(i);
if (child == null) {
jsonArray.put((Object) null);
} else {
......
......@@ -10,14 +10,14 @@ import com.virjar.superappium.util.Constants;
import java.util.Collection;
import java.util.Map;
public class ViewModel {
public class ViewImage {
private View originView;
private Map<String, ValueGetter> attributes;
private ViewModel parent = null;
private ViewImage parent = null;
private ValueGetter<String> type;
private int indexOfParent = -1;
public ViewModel(View originView) {
public ViewImage(View originView) {
this.originView = originView;
attributes = ValueGetters.valueGetters(this);
type = attrName(Constants.className);
......@@ -60,25 +60,25 @@ public class ViewModel {
return theChildCount;
}
private ViewModel[] children;
private ViewImage[] children;
public ViewModel childAt(int index) {
public ViewImage childAt(int index) {
if (childCount() < 0) {
throw new IllegalStateException("can not parse child node for none ViewGroup object!!");
}
if (children == null) {
children = new ViewModel[childCount()];
children = new ViewImage[childCount()];
}
ViewModel viewModel = children[index];
if (viewModel != null) {
return viewModel;
ViewImage viewImage = children[index];
if (viewImage != null) {
return viewImage;
}
ViewGroup viewGroup = (ViewGroup) originView;
viewModel = new ViewModel(viewGroup.getChildAt(index));
viewModel.parent = this;
viewModel.indexOfParent = index;
children[index] = viewModel;
return viewModel;
viewImage = new ViewImage(viewGroup.getChildAt(index));
viewImage.parent = this;
viewImage.indexOfParent = index;
children[index] = viewImage;
return viewImage;
}
public Integer index() {
......
package com.virjar.superappium.lazy;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
public class LazyValueGetter<T> implements ValueGetter {
private ValueGetter<T> delegate;
......@@ -18,7 +18,7 @@ public class LazyValueGetter<T> implements ValueGetter {
}
@Override
public Object get(ViewModel viewModel) {
public Object get(ViewImage viewImage) {
if (hasDelegateCalled) {
return theValue;
}
......@@ -26,7 +26,7 @@ public class LazyValueGetter<T> implements ValueGetter {
if (hasDelegateCalled) {
return theValue;
}
theValue = delegate.get(viewModel);
theValue = delegate.get(viewImage);
hasDelegateCalled = true;
}
return theValue;
......
package com.virjar.superappium.lazy;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
public interface ValueGetter<T> {
T get(ViewModel viewModel);
T get(ViewImage viewImage);
boolean support(Class type);
......
......@@ -2,7 +2,7 @@ package com.virjar.superappium.lazy;
import android.view.View;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.basic.HintGetter;
import com.virjar.superappium.lazy.basic.ImageUriGetter;
import com.virjar.superappium.lazy.basic.TextGetter;
......@@ -55,18 +55,18 @@ public class ValueGetters {
private static Map<Class<? extends View>, Map<String, ValueGetter>> cache = new HashMap<>();
public static Map<String, ValueGetter> valueGetters(ViewModel viewModel) {
Class<? extends View> aClass = viewModel.getOriginView().getClass();
public static Map<String, ValueGetter> valueGetters(ViewImage viewImage) {
Class<? extends View> aClass = viewImage.getOriginView().getClass();
boolean saveCache = false;
if (aClass.getClassLoader().equals(View.class.getClassLoader())) {
saveCache = true;
}
return valueGetters(viewModel, saveCache);
return valueGetters(viewImage, saveCache);
}
@SuppressWarnings("unchecked")
public static Map<String, ValueGetter> valueGetters(ViewModel viewModel, boolean saveCache) {
Class<? extends View> theClass = viewModel.getOriginView().getClass();
public static Map<String, ValueGetter> valueGetters(ViewImage viewImage, boolean saveCache) {
Class<? extends View> theClass = viewImage.getOriginView().getClass();
Map<String, ValueGetter> rule;
if (cache.containsKey(theClass)) {
rule = cache.get(theClass);
......
package com.virjar.superappium.lazy;
import com.virjar.superappium.ViewModel;
public class Values {
// public static ValueGetter<String> className(ViewModel view) {
// return cache(new ClassNameGetter(view.getOriginView()));
......
......@@ -2,14 +2,14 @@ package com.virjar.superappium.lazy.basic;
import android.widget.TextView;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
public class HintGetter implements ValueGetter {
@Override
public Object get(ViewModel viewModel) {
TextView textView = (TextView) viewModel.getOriginView();
public Object get(ViewImage viewImage) {
TextView textView = (TextView) viewImage.getOriginView();
CharSequence hint = textView.getHint();
if (hint == null) {
return null;
......
......@@ -2,15 +2,15 @@ package com.virjar.superappium.lazy.basic;
import android.widget.ImageView;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
import com.virjar.superappium.util.ReflectUtil;
public class ImageUriGetter implements ValueGetter {
@Override
public Object get(ViewModel viewModel) {
return ReflectUtil.getFieldValue(viewModel.getOriginView(), "mUri");
public Object get(ViewImage viewImage) {
return ReflectUtil.getFieldValue(viewImage.getOriginView(), "mUri");
}
@Override
......
......@@ -2,14 +2,14 @@ package com.virjar.superappium.lazy.basic;
import android.widget.TextView;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
public class TextGetter implements ValueGetter<String> {
@Override
public String get(ViewModel viewModel) {
TextView textView = (TextView) viewModel.getOriginView();
public String get(ViewImage viewImage) {
TextView textView = (TextView) viewImage.getOriginView();
CharSequence text = textView.getText();
if (text == null) {
return null;
......
package com.virjar.superappium.lazy.view;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
public class ClassNameGetter implements ValueGetter<String> {
@Override
public String get(ViewModel viewModel) {
return viewModel.getOriginView().getClass().getName();
public String get(ViewImage viewImage) {
return viewImage.getOriginView().getClass().getName();
}
@Override
......
package com.virjar.superappium.lazy.view;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
public class ClickableValueGetter implements ValueGetter<Boolean> {
@Override
public Boolean get(ViewModel viewModel) {
return viewModel.getOriginView().isClickable();
public Boolean get(ViewImage viewImage) {
return viewImage.getOriginView().isClickable();
}
@Override
......
package com.virjar.superappium.lazy.view;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
public class ContentDescriptionValueGetter implements ValueGetter<String> {
@Override
public String get(ViewModel viewModel) {
CharSequence contentDescription = viewModel.getOriginView().getContentDescription();
public String get(ViewImage viewImage) {
CharSequence contentDescription = viewImage.getOriginView().getContentDescription();
if (contentDescription == null) {
return null;
}
......
package com.virjar.superappium.lazy.view;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
public class EnabledValueGetter implements ValueGetter<Boolean> {
@Override
public Boolean get(ViewModel viewModel) {
return viewModel.getOriginView().isEnabled();
public Boolean get(ViewImage viewImage) {
return viewImage.getOriginView().isEnabled();
}
@Override
......
package com.virjar.superappium.lazy.view;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
public class FocusableValueGetter implements ValueGetter<Boolean> {
@Override
public Boolean get(ViewModel viewModel) {
return viewModel.getOriginView().isFocusable();
public Boolean get(ViewImage viewImage) {
return viewImage.getOriginView().isFocusable();
}
@Override
......
......@@ -2,14 +2,14 @@ package com.virjar.superappium.lazy.view;
import android.view.View;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
public class IdGetter implements ValueGetter<String> {
@Override
public String get(ViewModel viewModel) {
View originView = viewModel.getOriginView();
public String get(ViewImage viewImage) {
View originView = viewImage.getOriginView();
int id = originView.getId();
if (id <= 0) {
return null;
......
package com.virjar.superappium.lazy.view;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
public class IndexGetter implements ValueGetter<Integer> {
@Override
public Integer get(ViewModel viewModel) {
return viewModel.index();
public Integer get(ViewImage viewImage) {
return viewImage.index();
}
@Override
......
package com.virjar.superappium.lazy.view;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
public class LongClickableValueGetter implements ValueGetter<Boolean> {
@Override
public Boolean get(ViewModel viewModel) {
return viewModel.getOriginView().isLongClickable();
public Boolean get(ViewImage viewImage) {
return viewImage.getOriginView().isLongClickable();
}
@Override
......
......@@ -3,7 +3,7 @@ package com.virjar.superappium.lazy.view;
import android.content.Context;
import android.view.View;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
import com.virjar.superappium.util.ReflectUtil;
......@@ -11,8 +11,8 @@ import com.virjar.superappium.util.ReflectUtil;
public class PackageNameValueGetter implements ValueGetter<String> {
@Override
public String get(ViewModel viewModel) {
View originView = viewModel.getOriginView();
public String get(ViewImage viewImage) {
View originView = viewImage.getOriginView();
Context context = ReflectUtil.getFieldValue(originView, "mContext");
return context.getPackageName();
}
......
package com.virjar.superappium.lazy.view;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import com.virjar.superappium.lazy.ValueGetter;
import com.virjar.superappium.util.Constants;
public class SelectedValueGetter implements ValueGetter<Boolean> {
@Override
public Boolean get(ViewModel viewModel) {
return viewModel.getOriginView().isSelected();
public Boolean get(ViewImage viewImage) {
return viewImage.getOriginView().isSelected();
}
@Override
......
package com.virjar.superappium.xpath.model;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
public class XNode {
public enum NodeType {
NODE, TEXT
}
private ViewModel element;
private ViewImage element;
private boolean isText;
private String textVal;
public ViewModel getElement() {
public ViewImage getElement() {
return element;
}
public XNode setElement(ViewModel element) {
public XNode setElement(ViewImage element) {
this.element = element;
return this;
}
......@@ -38,9 +38,9 @@ public class XNode {
return this;
}
public static XNode e(ViewModel viewModel) {
public static XNode e(ViewImage viewImage) {
XNode xNode = new XNode();
xNode.setElement(viewModel).setText(false);
xNode.setElement(viewImage).setText(false);
return xNode;
}
......
package com.virjar.superappium.xpath.model;
import com.virjar.superappium.ViewModel;
import com.virjar.superappium.ViewImage;
import java.util.Iterator;
import java.util.LinkedList;
......@@ -39,15 +39,15 @@ public abstract class XpathEvaluator {
private List<XNode> handleNode(List<XNode> input, final XpathNode xpathNode) {
// 目前只支持对element元素进行抽取,如果中途抽取到了文本,则会断节
List<ViewModel> elements = XpathUtil.transformToElement(input);
List<ViewModel> contextElements;
List<ViewImage> elements = XpathUtil.transformToElement(input);
List<ViewImage> contextElements;
// 轴
AxisFunction axis = xpathNode.getAxis();
if (axis != null) {
contextElements = Lists.newLinkedList();
for (ViewModel element : elements) {
ViewModel call = axis.call(element, xpathNode.getAxisParams());
for (ViewImage element : elements) {
ViewImage call = axis.call(element, xpathNode.getAxisParams());
if (call != null) {
contextElements.addAll(call);
}
......
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