feat(selector): supports javascript regex

This commit is contained in:
hyb1996 2018-01-30 11:41:15 +08:00
parent ec7a0412af
commit fccfe85287
2 changed files with 39 additions and 1 deletions

View File

@ -77,7 +77,13 @@ public class CodeGenerator {
}
protected String generateCode(UiSelectorGenerator generator, UiObject root, UiObject target, int maxParentLevel, int maxChildrenLevel, boolean withFind) {
String selector = withFind ? generator.generateSelectorCode() : generator.generateSelector().toString();
String selector;
if (withFind) {
selector = generator.generateSelectorCode();
} else {
UiGlobalSelector s = generator.generateSelector();
selector = s == null ? null : s.toString();
}
if (selector != null) {
return selector;
}

View File

@ -84,6 +84,38 @@ public class UiSelector extends UiGlobalSelector {
return findOf(UiObject.createRoot(root, mAllocator));
}
@Override
public UiGlobalSelector textMatches(String regex) {
return super.textMatches(convertRegex(regex));
}
// TODO: 2018/1/30 更好的实现方式
private String convertRegex(String regex) {
if (regex.startsWith("/") && regex.endsWith("/") && regex.length() > 2) {
return regex.substring(1, regex.length() - 1);
}
return regex;
}
@Override
public UiGlobalSelector classNameMatches(String regex) {
return super.classNameMatches(convertRegex(regex));
}
@Override
public UiGlobalSelector idMatches(String regex) {
return super.idMatches(convertRegex(regex));
}
@Override
public UiGlobalSelector packageNameMatches(String regex) {
return super.packageNameMatches(convertRegex(regex));
}
@Override
public UiGlobalSelector descMatches(String regex) {
return super.descMatches(convertRegex(regex));
}
private void ensureAccessibilityServiceEnabled() {
mAccessibilityBridge.ensureServiceEnabled();