3

我使用了 WindowsPhoneTestFramework 并且很棒,但它不支持我需要的一些功能,例如设置更改模拟器布局的元素的宽度和高度,以便在横向和纵向等中进行测试。在尝试添加时由于某种原因,像宽度和高度这样的简单命令不起作用,因此需要调试 AutomationClient。例如,我需要查看我在 WindowsPhoneTestFramework.Client.AutomationClient.Remote 中创建的 SetWidthCommand 中发生了什么,并了解为什么在被测应用程序中没有更新该属性。

我创建了 SetWidth 命令并从控制台调用,例如: setWidth id=widthValue

我可以调试,直到我到达 ApplicationAutomationController,其中创建了带有 AutomationIdentifier 和值的命令,并且在 SyncExecuteCommand 之后我得到的结果为 false。这意味着客户端出现问题,那么如何调试 Client.AutomationClient 中的 SetWidthCommand。 Remote 这是 Client.AutomationClient.Remote 中的 SetWidthCommand

public partial class SetWidthCommand
{
    protected override void DoImpl()
    {

        var element = GetUIElement();
        if (element == null)
            return;

        if (AutomationElementFinder.SetElementProperty(element, "Width", Value))
        {
            SendSuccessResult();
            return;
        }
        //setWidth ContentPanel 400
        if (ValueCommandHelper.TrySetValue(element, Value.ToString(CultureInfo.InvariantCulture)))
        {
            SendSuccessResult();
            return;
        }
        // if width is missing... then give up
        SendNotFoundResult();
    }

谢谢你。

4

1 回答 1

1

该框架通过以下方式工作:

主人

客户端

添加命令或结果

因为这个机制使用 WCF,那么如果你想在处理中添加一个新的 Command 或一个新的 Result,那么你首先需要将这些添加到 Host,然后你需要更新客户端代码 - 为此你将需要使用 Visual Studio 工具更新自动生成的 WCF 类在https://github.com/Expensify/WindowsPhoneTestFramework/tree/master/Client/AutomationClient/Service%20References

此 WCF 更新可能非常繁琐 - 但它是“正常”的 WCF 操作 - http://msdn.microsoft.com/en-us/library/bb628652.aspx

一旦更新了这些,您就可以在客户端中为您的新命令编写部分类代码。

替代

作为一种替代方法,有一个“通用”命令和结果对可用 -

如果您希望使用这些,则通用命令将传递给在https://github.com/Expensify/WindowsPhoneTestFramework/blob/master/Client/AutomationClient/Remote/GenericCommand.cs中静态注册的处理程序

例如,您可以注册以下内容:

GenericCommand.AddHandlerFactory("MyKey", (command, action) => {
    return (command) => {
        var result = new SuccessResult() {ResultText = "some example text" };
        result.Send(command.Configuration);
    };
});

这将用于处理任何带有pleaseDo“MyKey”字段的GenericCommand

调试

根据您的问题,我假设您已经成功调试主机。

调试客户端的最简单方法是:


我希望这会有所帮助......如果没有,也许尝试发布更大的代码示例(也许使用 gist 或 github)

于 2012-09-19T21:14:10.497 回答