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

使用Appium注解获取多个EditText元素返回空的问题求助

解决Appium获取EditText元素列表返回空的问题

1. 修正注解用法

原代码使用[FindsByAndroidUIAutomator]注解定义列表字段时无法正确匹配多个元素,需改用针对多平台的标准定位注解写法,同时确保字段类型为List<IMobileElement<AppiumWebElement>>:

[AndroidFindBy(UIAutomator = "className(\"android.widget.EditText\")")]
[iOSFindBy(Accessibility = "")]
public List<IMobileElement<AppiumWebElement>> PhoneFields;

若需通过FindAll包裹多平台规则,也可使用以下写法:

[FindAll(FindBy = new[] {
    new AndroidFindByAttribute { UIAutomator = "className(\"android.widget.EditText\")" },
    new IOSFindByAttribute { Accessibility = "" }
})]
public List<IMobileElement<AppiumWebElement>> PhoneFields;

2. 确保元素完成加载

单个元素能找到但列表为空,可能是部分元素未渲染完成。可添加显式等待,确保目标元素全部加载:

// 等待页面中所有EditText元素加载完成
var wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(10));
wait.Until(d => d.FindElements(By.ClassName("android.widget.EditText")).Count == 9);

// 之后再访问元素列表
var editTextList = PhoneFields;

3. 检查应用上下文

如果页面包含WebView,需确认当前处于原生应用上下文(而非Web上下文),可通过以下代码切换:

// 获取所有可用上下文
var contexts = Driver.Contexts;
// 切换到原生应用上下文(名称通常包含"NATIVE_APP")
Driver.Context = contexts.First(c => c.Contains("NATIVE_APP"));

内容的提问来源于stack exchange,提问作者Maciek Maciek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:52:38