我想使用UI Automation或FlaUI从列表项的LegacyIAccessible描述属性中获取值。我有以下工作,但它不一致。我不确定为什么但似乎只有在测试开始之前目标窗口打开(使用SpecFlow运行测试)才能工作。
for (int i = 0; i < listbox.Items.Length, i++)
{
itemDesciption = listBox.Items[i].Patterns.LegacyIAccessible.PatternOrDefault.Description;
if (itemDesciption.Contains("value"))
{
targetItem = listBox.Items[i]; )
}
也许你可以尝试这样的东西(基于FlaUI3版本)
[TestMethod]
public void TestMethod2()
{
var app = FlaUI.Core.Application.Launch("WindowsFormsApp1.exe");
app.WaitWhileBusy();
using (var automation = new UIA3Automation())
{
var window = app.GetMainWindow(automation);
var listBox = window.FindFirstDescendant(cf => cf.ByAutomationId("listBox1")).AsListBox();
foreach (ListBoxItem item in listBox.Items)
{
Console.WriteLine(item.Patterns.LegacyIAccessible.Pattern.Description.Value);
}
window.Close();
}
}