这可能有点疯狂/疯狂,但是有什么方法可以在不使用框架的情况下执行WPF自动化测试吗?
有几次,我实际上需要UIElement/FrameworkElement,并且希望直接访问它。我正在研究Snoop来尝试处理它,但是将它“注入”到一个过程中看起来有点痛苦。
我尝试连接到已启动的进程(我们目前正在使用SpecFlow),但是任何试图释放进程或窗口线程的尝试(我已经查找了实际窗口的proc并尝试了连接)都会导致来自HwndSource的null。我还试图在我的单元测试中创建应用程序的一个实例,但是看起来NUnit在后台启动应用程序(即使是在STA线程上)有问题,因为第二个测试开始尝试加载,应用程序开始阻塞。
有没有人在做其他事情上取得过成功?我现在唯一的想法是“解决”这个问题,就是创建一个特殊的AutomationPeer,我可以对它进行反思,然后得到FrameworkElement,或者诸如此类的东西。
有什么想法吗?
发布于 2015-05-21 16:31:30
不,没有任何东西可以封送WPF元素(特别是底层的本地元素,如图形资源、图像等)。跨进程,UI自动化根据定义跨进程工作。
如果您拥有目标应用程序,如果您为您的应用程序创建特定的AutomationPeers,则可以显着地增加其“UIAutomation”。
否则,窥探方式(进程注入)是唯一的方法(但有许多缺点,包括安全问题)。
发布于 2015-05-25 11:51:16
如果是这样的话:
不使用框架执行WPF自动化测试的任何方法?
您可以使用Telerik测试工作室,它很丰富,通过一些编码,您就会习惯它。另一个优点是良好的文档和他们可以提供的帮助。
老实说,我花了一段时间,但由于框架是免费的,我最终决定使用它而不是MS替代。
https://stackoverflow.com/questions/30376992
复制相似问题