2016-04-06 13 views
1

kullanarak Ağaç Düğümlerine Erişilemiyor Ms Outlook Takvim görünümünü TestStack.White ile otomatikleştirmeyi denedim ancak Ağaçlar ve Ağaç Öğeleri'ni kullanamıyorum.TestStack.White

Outlook'un Takvim görünümünde

bir Takvim Klasörler şu yapıyla Ağacı vardır:

enter image description here

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 

şey: kodun aynı Aşağıdaki parçası için

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 

istisna oluştu:

foreach(TreeNode node in calendarTree.Nodes) // Exception thrown here 
{ 
    //perform action on nodes 
} 

Bunun için bir çözüm var mı?

cevap

0

Aynı sorunla karşılaştık. Bir böcek gibi görünüyor. Geliştirdiğimiz çözüm, düğümler ile TreeNodes yerine IUIItems olarak etkileşim kurmaktı. Onlarla etkileşim etrafında biraz daha özel kod yazmanız gerekir, ancak en azından tıklama eylemleri gerçekleştirmenizi sağlar.

+0

bu üzerinde durabilir misiniz? Aynı konuya girdim. – AustinMatherne

0

Zaten çalışıyor gibi görünüyor. TestStack.White [0.13.3] + UIAComWrapper [1.1.0.14] (benim yapılandırma, ancak sonuncusu olmadan deneyebilirsiniz):

Tree tree = mainWindow.Get<Tree>("treeMenu"); //primaryId 
tree.Click(); 
MessageBox.Show(tree.Nodes.Count.ToString());