1

我正在使用 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 进行测试,也会发生同样的情况。如果我要折叠应用程序的整个树并且我再次转到消息,我会看到新消息。有时我把树倒塌后看不到整棵树。然后我必须重新启动浏览器。有人知道我如何通过我的程序获得新消息吗?检查工具如何(以及为什么)获得更好的结果?

问候

4

0 回答 0