我是靠谱客的博主 细心日记本,最近开发中收集的这篇文章主要介绍十二、Android UiAutomator正则表达式的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、正则表达式元字符:
1.一些常用元字符:

元字符

描述

.表示任意一个字符
s空格字符(空格键、tab、换行、换页、回车)
S非空字符串([^s])
d一个数字(相当于[0-9]中间的任意一个数字)
D一个非数字的字符(相当于[^0-9]非0-9的任意一个字符)
w一个单词字符相当于(相当于[a-z,A-Z,0-9])
W一个非单词字符[^w]
^一行的开始
$一行的结尾
b一个单词的边界
比如说两个两个单词之间的空格就是边界
B一个非单词的边界
[]匹配方括号内的一个字符。
例如:
[abc]表示字符a,b,c,中的任意一个(与a|b|c相同)。
[a-zA-z]表示从a到z或A到Z中的任意一个字符

2.表示次数的元字符:

元字符

描述

*重复零次或更多次。例如:a* 匹配零个或者多个a
+重复一次或更多次。例如:a+匹配一个或者多个a
?重复零次或一次。例如:a?匹配零个或一个a
{n}重复n次。例如:a{4}匹配4个a
{n,}重复n次或更多次。例如:a{4,}匹配至少4个a
{n,m}重复n到m次。例如:a{4,10}匹配4-10个a

3.正则表达式中文字符匹配:

正则表达式也支持Unicode码,汉字范围可使用Unicode来表示

中文字符匹配

描述

[u4E00-u9FA5]汉字
[uFE3-uFFA0]全角字符
[^x00-xff]匹配双字节字符(包括汉字在内)

二、正则表达式匹配示例:

1.普通字符串匹配:
字符串模糊匹配较精确匹配
12:12d+:d+dd:dd
2013-10-24 星期四d+-d+-d+星期[u4E00-u9FA5]d{4}-d{2}-d{2} 星期[一二三四五六
5:25PMd+:d+[AP]Md?d+:dd[AP]M
下午4:40.午d:d+[上下]午d?d:dd
Ip地址(d+.)+{3}d+(d?d?d.){3}d?d?d
邮箱地址w@w.w^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+

2.场景字符串匹配:

文件大小数字单位数字
1GB整数GB整数或小数
1KB小数MBd+
500B空格KB单位
B[GMK]?B(d+|d+.d+)s?[GMK]?B

 

三、正则表达式操作:
1.UiSelector涉及到字符串的搜索条件

文本条件搜索
描述条件搜索
类名条件搜索
资源ID条件搜索

2.Java文本处理操作

匹配字符串
替换字符串
提取字符串
拆分字符串

3.正则表达式相关API:

描述

UiAutomator API

正则文本匹配textMarches(regex)
正则描述匹配descriptionMarches(regex)
正则类名匹配classNameMarches(regex)
正则资源ID匹配resourceIdMarches(regex)

 

描述

Java API

匹配字符串matcher(regex)
替换字符串replase(regex,input)
提取字符串Matcher.group()
拆分字符串split(regex)

 

  • 例如:
复制代码
//UiAutomator
public void testDemo1() throws UiObjectNotFoundException{
//文本
//正则完全匹配
UiObject object=new UiObject(new UiSelector().textMatches("电影工作室"));
object.clickAndWaitForNewWindow();
UiDevice.getInstance().pressBack();
//正则匹配1
UiObject object1=new UiObject(new UiSelector().textMatches("电影.*"));
object1.clickAndWaitForNewWindow();
UiDevice.getInstance().pressBack();
//正则匹配2
UiObject object2=new UiObject(new UiSelector().textMatches(".*工作室"));
object2.clickAndWaitForNewWindow();
UiDevice.getInstance().pressBack();
//正则匹配3
UiObject object3=new UiObject(new UiSelector().textMatches(".*工作.*"));
object3.clickAndWaitForNewWindow();
UiDevice.getInstance().pressBack();
//类名正则匹配
UiObject object4=new UiObject(new UiSelector().classNameMatches(".*TextView").index(3));
object4.clickAndWaitForNewWindow();
UiDevice.getInstance().pressBack();
//描述正则匹配
UiObject object5=new UiObject(new UiSelector().descriptionMatches(".*部件"));
UiObject object6=new UiObject(new UiSelector().descriptionMatches("应.*"));
object5.clickAndWaitForNewWindow();
object6.clickAndWaitForNewWindow();
//资源ID正则匹配
UiObject object7=new UiObject(new UiSelector().resourceIdMatches(".*analog_appwidget"));
object7.clickAndWaitForNewWindow();
UiDevice.getInstance().pressBack();
}
复制代码
复制代码
//JAVA
public static void main(String[] args){
//匹配
String s="789655dsa456kdsaaa951afd";
System.out.println(s.matches(".*aaa.*"));
//替换
a--b
String r=s.replaceAll("a", "b");
System.out.println(r);
String q=s.replaceAll("\d", "b");
System.out.println(q);
String a=s.replaceAll("\w", "b");
System.out.println(a);
//提取
Pattern rp=Pattern.compile("\d+");
Matcher m=rp.matcher(s);
while (m.find()){
System.out.println(m.group());
}
//分割
String [] sp=s.split("\d+");
for(int i=0;i<sp.length;i++){
System.out.println(sp[i]);
}
}
复制代码
四、正则表达式实例:
复制代码
//实例一:初始化界面
public void testDemo1() throws UiObjectNotFoundException{
UiDevice.getInstance().pressBack();
UiDevice.getInstance().pressBack();
UiDevice.getInstance().pressHome();
//兼容多语言
//点击联系人
UiObject persion=new UiObject(new UiSelector().textMatches("联系人|People"));//中文或英文

persion.clickAndWaitForNewWindow();
//点击添加
UiObject add=new UiObject(new UiSelector().descriptionMatches("添加联系人|Add\sContact"));
add.clickAndWaitForNewWindow();
//获取姓名和输入框和完成按钮
UiObject name=new UiObject(new UiSelector().classNameMatches(".*EditText").text("姓名|Name"));
UiObject phone=new UiObject(new UiSelector().classNameMatches(".*EditText").text("电话|Phone"));
UiObject done=new UiObject(new UiSelector().text("完成|Done"));
//输入姓名电话后点击完成

String nameStr="Jian"+new Random().nextInt(100);
name.setText(nameStr);
phone.setText("123456789");
done.clickAndWaitForNewWindow();
//判断创建是否成功
assertTrue(new UiObject(new UiSelector().textMatches(nameStr)).exists());
}
复制代码
复制代码
//实例二:
public void testDemo2() throws UiObjectNotFoundException{
//同种类型的对话框按钮
clickDialog(false);
}
public void clickDialog(boolean yn) throws UiObjectNotFoundException{
UiObject y=new UiObject(new UiSelector().textMatches("是|确认|确定|Y|OK"));
UiObject n=new UiObject(new UiSelector().textMatches("否|同意|取消|N|Cancel"));
if(yn){
try {
y.click();
} catch (UiObjectNotFoundException e) {
// TODO Auto-generated catch block

e.printStackTrace();
}
}else{
n.click();
}
}

最后

以上就是细心日记本为你收集整理的十二、Android UiAutomator正则表达式的使用的全部内容,希望文章能够帮你解决十二、Android UiAutomator正则表达式的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部