首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用TestStack.White访问树节点

无法使用TestStack.White访问树节点
EN

Stack Overflow用户
提问于 2016-04-06 12:13:20
回答 2查看 2.1K关注 0票数 1

我试图用TestStack.White自动化视图,但无法处理树和树项。

在Outlook的日历视图中,有一个具有以下结构的日历文件夹树:

代码语言:javascript
复制
SearchCriteria searchCriteria = SearchCriteria.ByText("Calendar Folders").AndControlType(ControlType.Tree).AndIndex(0);
Tree calendarTree = (Tree)WhiteWindows.mainWindow.Get(searchCriteria);

calendarTree.Click(); // this action is performed correctly - clicks on the tree

Console.WriteLine("No. of nodes: " + calendarTree.Nodes.Count); // this line throws an exception

一些东西:

代码语言:javascript
复制
Result StackTrace:  
at TestStack.White.Mappings.ControlDictionary.GetTestControlType(String className, String name, ControlType controlType, String frameWorkId, Boolean isNativeControl) in c:\TeamCity\buildAgent\work\89a20b30302799e\src\TestStack.White\Mappings\ControlDictionary.cs:line 157
   at TestStack.White.Mappings.ControlDictionary.GetTestControlType(AutomationElement automationElement) in c:\TeamCity\buildAgent\work\89a20b30302799e\src\TestStack.White\Mappings\ControlDictionary.cs:line 218
   at TestStack.White.Factory.DictionaryMappedItemFactory.Create(AutomationElement automationElement, ActionListener actionListener) in c:\TeamCity\buildAgent\work\89a20b30302799e\src\TestStack.White\Factory\DictionaryMappedItemFactory.cs:line 13
   at TestStack.White.UIItemList`1..ctor(List`1 collection, UIItemFactory factory, ActionListener actionListener) in c:\TeamCity\buildAgent\work\89a20b30302799e\src\TestStack.White\UIItemList.cs:line 26
   at TestStack.White.UIItems.TreeItems.Tree.get_Nodes() in c:\TeamCity\buildAgent\work\89a20b30302799e\src\TestStack.White\UIItems\TreeItems\Tree.cs:line 54
   at TestStack.White.Bricks.DelegateInvoker.ActionInvokerWrapper`1.Call(Object[] args) in c:\TeamCity\buildAgent\work\89a20b30302799e\src\TestStack.White\Bricks\DelegateInvoker.cs:line 198
   at TestStack.White.Bricks.DynamicProxyInterceptors.Process(IInvocation invocation, CoreInterceptContext interceptedContext) in c:\TeamCity\buildAgent\work\89a20b30302799e\src\TestStack.White\Bricks\DynamicProxyInterceptors.cs:line 21
   at TestStack.White.Interceptors.CoreInterceptor.Intercept(IInvocation invocation) in c:\TeamCity\buildAgent\work\89a20b30302799e\src\TestStack.White\Interceptors\CoreInterceptor.cs:line 31
   at Castle.DynamicProxy.AbstractInvocation.Proceed()
   at Castle.Proxies.TreeProxy.get_Nodes()
   at UI.Tests.StepDefinitions.TempSteps.WhenCalendarIsSelectedOnPage(String p0, String p1) in StepDefinitions\TempSteps.cs:line 183
   at lambda_method(Closure , IContextManager , String , String )
   at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()
   at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()
   at UI.Tests.Features.PlaygroundFeature.ScenarioCleanup() in UI.Tests\Features\Playground.feature.cs:line 0
   at UI.Tests.Features.PlaygroundFeature.SelectNewCalendar() in UITests\Features\Playground.feature:line 11
Result Message: 
Test method UI.Tests.Features.PlaygroundFeature.SelectNewCalendar threw exception: 
TestStack.White.Mappings.ControlDictionaryException: Multiple TestControls found for ControlType=tree view item and FrameworkId: - TestStack.White.UIItems.TreeItems.Win32TreeNode, TestStack.White.UIItems.TreeItems.WPFTreeNode, TestStack.White.UIItems.TreeItems.Win32TreeNode

对于以下代码,也发生了相同的异常:

代码语言:javascript
复制
foreach(TreeNode node in calendarTree.Nodes) // Exception thrown here
{
    //perform action on nodes
}

有人有办法解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2016-06-14 16:46:57

我们遇到了同样的问题。好像是个虫子。我们开发的解决方法是以IUIItems而不是TreeNodes的形式与节点交互。您必须编写一些与它们交互的定制代码,但至少它允许您执行单击操作等。

票数 0
EN

Stack Overflow用户

发布于 2017-08-17 13:47:42

看来它已经起作用了。TestStack.White 0.13.3 + UIAComWrapper 1.1.0.14

代码语言:javascript
复制
Tree tree = mainWindow.Get<Tree>("treeMenu"); //primaryId
tree.Click();
MessageBox.Show(tree.Nodes.Count.ToString());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36450820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档