Xamarin UITest:能否使用不区分大小写的字符串进行App查询?
解决UITest中列表项不区分大小写查询的问题
我刚好碰到过一模一样的场景,UITest的AppQuery确实没内置不区分大小写的Contains方法,但咱们可以用两种简单思路搞定这个需求:
方法一:查询结果后用LINQ过滤
先把所有目标TextView的文本内容拉取出来,再用LINQ的不区分大小写判断逻辑检查是否存在匹配项:
// 获取所有id为text_name的TextView的文本结果 var nameResults = app.Query(e => e.All().Id("text_name").Property("Text")); // 用StringComparison.OrdinalIgnoreCase实现不区分大小写的完全匹配 var hasTargetName = nameResults.Any(result => result.Text.Equals("Dupont", StringComparison.OrdinalIgnoreCase));
如果需要部分匹配(比如要匹配包含"Dup"的任意大小写变体),把Equals换成IndexOf就行:
var hasTargetName = nameResults.Any(result => result.Text.IndexOf("Dup", StringComparison.OrdinalIgnoreCase) >= 0);
方法二:在AppQuery中使用Matches谓词
UITest的Property方法支持链式调用Matches,可以传入自定义的判断逻辑,直接在查询阶段就过滤出符合条件的项:
// 直接在查询流程中加入不区分大小写的匹配逻辑 var matchingItems = app.Query(e => e.All().Id("text_name").Property("Text").Matches(text => text.Equals("Dupont", StringComparison.OrdinalIgnoreCase))); var hasTargetName = matchingItems.Any();
同样,要是需要部分匹配,调整谓词里的判断逻辑就可以了。
这两种方式都能完美解决大小写变体的匹配问题,你可以根据自己的代码习惯选一个用~
内容的提问来源于stack exchange,提问作者Achraf Amil
相关产品推荐
相关产品推荐

