Элемент автоматизации во флеш
Я использую AutomationElement-Class, чтобы найти чат во флеш-приложении (BigBlueButton, http://demo.bigbluebutton.org/, я его там тестирую) в браузере (firefox). Кажется, работает, пока не появляются новые сообщения. Каждый раз, когда приходит новое сообщение, пользовательский интерфейс обновляет элемент AutomationElement, который а) не может найти чат или б) элемент 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");
}
}
Кто-нибудь знает, как получить чат после обновления пользовательского интерфейса?
Я протестировал его с помощью MS inspect-tool ( https://msdn.microsoft.com/en-us/library/windows/desktop/dd318521%28v=vs.85%29.aspx). Если приходит новое сообщение чата, и я обновляю дерево, я также не видел новое сообщение. То же самое происходит, если я проверяю это с помощью Internet Explorer. Если я сворачиваю все дерево приложения и снова иду к сообщениям, я вижу новое сообщение. Иногда я не вижу целое дерево после того, как я свернул дерево. Затем я должен перезагрузить браузер. Кто-нибудь знает, как я могу получить новое сообщение от моей программы? Как (и почему) инструмент проверки дает лучшие результаты?
Привет