You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:09:49