【发布时间】:2017-12-07 18:57:28
【问题描述】:
我正在使用 White 构建一个自动化测试套件。我需要做的一件事是单击系统升级通知区域中的图标(开始栏的右下角)。不过,我很难向怀特识别它。使用 Spy++,我发现它在窗口深处嵌套了三层,没有要搜索的标题,这是 White 识别窗口的正常方式。因此,我试图按类找到正确的窗口。
根据 Spy++,我首先需要获取窗口 10042,它具有类“Shell_TrayWnd”。然后是它的子窗口 10048,类 TrayNotifyWnd,最后是系统提升通知区域,窗口 1005E,类 ToolbarWindow32。从this 回答中得到一些提示,我尝试了以下代码:
win=Desktop.Instance.Get<Window>(SearchCriteria.ByNativeProperty(AutomationElement.ClassNameProperty, "Shell_TrayWnd"));
但是当我尝试运行它时,我记录了这个错误(原文如此):
Exception: Error occured while geting (),AutomationElementIdentifiers.ClassNameProperty=Shell_TrayWnd
有什么想法吗?
编辑:我更改了错误日志记录,因此我得到了完整的回溯,而不仅仅是异常消息,并找到了System.ArgumentException: Must specify at least two conditions.
所以我将代码修改为
win = Desktop.Instance.Get<Window>(SearchCriteria.ByClassName("Shell_TrayWnd").AndIndex(0));
但尽管我指定了两个条件,但它仍然给出完全相同的错误消息。
Exception: TestStack.White.WhiteException: Error occured while geting (),ClassName=Shell_TrayWnd,Index=0 ---> System.ArgumentException: Must specify at least two conditions.
【问题讨论】:
-
您找到解决方案了吗?我尝试了您的方法和@Rescis,但我收到了相同的错误消息。想法?
-
不,我最终把它留到以后,从来没有考虑过。目前,这部分测试仍然必须手动完成。我本来打算在某个时候尝试 Rescis 的解决方案,但我被其他项目牵制了,再也没有回去。
标签: c# automation automated-tests white-framework