我正在使用 AutomationElement-Class 在浏览器 (firefox) 中的 flash 应用程序(BigBlueButton,http ://demo.bigbluebutton.org,我正在测试它)中查找聊天。只要没有出现新消息,它似乎就可以工作。每次有新消息进入时,UI 都会更新 AutomationElement,其中 a) 找不到聊天或 b) AutomationElement 描述聊天不包含消息。在新消息到达之前,它似乎起作用了。我可以访问这些消息。
到目前为止我的代码:
private void getLastChatMessage(){
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("Firefox");
AutomationElement au = AutomationElement.FromHandle(p[0].MainWindowHandle);
PropertyCondition chatCond = new PropertyCondition(AutomationElement.NameProperty, "Message Box");
Condition listCond = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.List);
AndCondition listAChatCond = new AndCondition(listCond, chatCond);
AutomationElement chatArea = au.FindFirst(TreeScope.Descendants, listAChatCond);
if (chatArea == null)
{
System.Console.WriteLine("chatArea == null");
return;
}
System.Console.WriteLine("name: {0}", chatArea.Current.Name);
PropertyCondition messageCond = new PropertyCondition(AutomationElement.IsEnabledProperty, true);
AutomationElementCollection chatMessages = chatArea.FindAll(TreeScope.Children, messageCond);
if (chatMessages.Count > 0)
{
String lastMessage = chatMessages[chatMessages.Count - 1].Current.Name;
System.Console.WriteLine("lastMessage: {0}", lastMessage);
}
else
{
System.Console.WriteLine("chatMessages.Count <= 0");
}
}
有人知道如何在 UI 更新后进行聊天吗?
我使用 MS 检查工具(https://msdn.microsoft.com/en-us/library/windows/desktop/dd318521%28v=vs.85%29.aspx)对其进行了测试。如果有新的聊天消息出现并且我刷新了树,我也没有看到新消息。如果我使用 Internet Explorer 进行测试,也会发生同样的情况。如果我要折叠应用程序的整个树并且我再次转到消息,我会看到新消息。有时我把树倒塌后看不到整棵树。然后我必须重新启动浏览器。有人知道我如何通过我的程序获得新消息吗?检查工具如何(以及为什么)获得更好的结果?
问候