i tried automate ms outlook calendar view teststack.white
cannot handle trees , tree items.
on outlook's calendar view there calendar folders tree following structure:
searchcriteria searchcriteria = searchcriteria.bytext("calendar folders").andcontroltype(controltype.tree).andindex(0); tree calendartree = (tree)whitewindows.mainwindow.get(searchcriteria); calendartree.click(); // action performed correctly - clicks on tree console.writeline("no. of nodes: " + calendartree.nodes.count); // line throws exception
something:
result stacktrace: @ 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 @ teststack.white.mappings.controldictionary.gettestcontroltype(automationelement automationelement) in c:\teamcity\buildagent\work\89a20b30302799e\src\teststack.white\mappings\controldictionary.cs:line 218 @ teststack.white.factory.dictionarymappeditemfactory.create(automationelement automationelement, actionlistener actionlistener) in c:\teamcity\buildagent\work\89a20b30302799e\src\teststack.white\factory\dictionarymappeditemfactory.cs:line 13 @ 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 @ teststack.white.uiitems.treeitems.tree.get_nodes() in c:\teamcity\buildagent\work\89a20b30302799e\src\teststack.white\uiitems\treeitems\tree.cs:line 54 @ teststack.white.bricks.delegateinvoker.actioninvokerwrapper`1.call(object[] args) in c:\teamcity\buildagent\work\89a20b30302799e\src\teststack.white\bricks\delegateinvoker.cs:line 198 @ teststack.white.bricks.dynamicproxyinterceptors.process(iinvocation invocation, coreinterceptcontext interceptedcontext) in c:\teamcity\buildagent\work\89a20b30302799e\src\teststack.white\bricks\dynamicproxyinterceptors.cs:line 21 @ teststack.white.interceptors.coreinterceptor.intercept(iinvocation invocation) in c:\teamcity\buildagent\work\89a20b30302799e\src\teststack.white\interceptors\coreinterceptor.cs:line 31 @ castle.dynamicproxy.abstractinvocation.proceed() @ castle.proxies.treeproxy.get_nodes() @ ui.tests.stepdefinitions.tempsteps.whencalendarisselectedonpage(string p0, string p1) in stepdefinitions\tempsteps.cs:line 183 @ lambda_method(closure , icontextmanager , string , string ) @ techtalk.specflow.bindings.bindinginvoker.invokebinding(ibinding binding, icontextmanager contextmanager, object[] arguments, itesttracer testtracer, timespan& duration) @ techtalk.specflow.infrastructure.testexecutionengine.executestepmatch(bindingmatch match, object[] arguments) @ techtalk.specflow.infrastructure.testexecutionengine.executestep(stepinstance stepinstance) @ techtalk.specflow.infrastructure.testexecutionengine.onafterlaststep() @ techtalk.specflow.testrunner.collectscenarioerrors() @ ui.tests.features.playgroundfeature.scenariocleanup() in ui.tests\features\playground.feature.cs:line 0 @ 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 controltype=tree view item , frameworkid: - teststack.white.uiitems.treeitems.win32treenode, teststack.white.uiitems.treeitems.wpftreenode, teststack.white.uiitems.treeitems.win32treenode
for following piece of code same exception occurred:
foreach(treenode node in calendartree.nodes) // exception thrown here { //perform action on nodes }
does have workaround this?
we encountered exact same problem. appears bug. workaround developed interact nodes iuiitems instead of treenodes. have write little more custom code around interacting them, @ least allows perform click actions, etc.
Comments
Post a Comment