ContributionsMost RecentMost LikesSolutionsRe: Looking into IDispatchWrapper-Objects Hi Tanya, I would say there is no real solution as I wrote in my reply to Alex. Think we can close the case w.o. having found a "real" solution. Regards Ulrich Re: Looking into IDispatchWrapper-Objects Hi Alex, right, wie use the QuerySelector methods provided by TC. They work fine. And they give back these wrapper objects where up to now I did not find a pythonis way to look into them - just becaus they are a kind of com objects coming form the language TC was written in. So as far as I see I have to try with the DOM object definition and then coding a try and arroe method to identify the DOM object behind the wrapper. Not very elegant but I think it is the only way. What I was dreaming of was a kind of dict-method as known from python to get a api information, but ... Regards Ulrich Re: Looking into IDispatchWrapper-Objects Hi Alex, most of the time we use CSS selectors for accessing webelement. We like it more than the NameMapping, especially because we have a lot of dynamic elements. As it can be seen in the posts before we use python to do the work, what works very well When we access a WebElement there often comes a SavaArrayWrapper or DispatchWrapper object. I've read a lot of stoff about it and did a lot of dir-ing into the objects. But up to now I did not find a way to analyse the api of such an object related to the attributes or methods they wrap. So it is a lot of try and error, what is a little bit frustrating - ok, very frustrating ;-) So if you or anyone has an idea how to identify the wrapped apis of the objects I would be more than happy. Regards Ulrich Re: CSV Parameter trickery in keywordtests This is funny ... I'm thinking about things and do not have a clue and in the moment I've asked the community I have a possible solution in mind :-) I want to show what I think is a possible (but somewhat ugly) solution to the described problem: The local or project variable that holds the csv row is of type DB Table. If I hand over this one I can extract the values into a dictionary and everything is fine. test(scenario, device, db_table): values = dict() for i in range(0, db_table.ColumnCount): name =db_table.ColumnName[i] values[name] = db_table.Value[name] ... Feel free to comment/modify Regards Ulrich Looking into IDispatchWrapper-Objects Hi *, how can I look into a IDispatchWrapper-Object (and also the famous SafeArrayWrapper) to find out what properties and/or methods it supports? Regards Ulrich SolvedCSV Parameter trickery in keywordtests Hi *, - I'm working with a data driven loop, connected to a csv file. - The file holds scenario data organized in the form scenario;device_name;input1;input2;...;expected1;expected2;... - The scripted test (in python) has the parameters def test(scenario, device, **kwargs). **kwargs should take a dynamic numer of key-value-pairs, the input and expected values. But the kwargs-part is not shown in the keywordtest as valid parameter to be filled with values. With *args which resembles a dynamic list of pararameter values it is a little bit different, because the argument is shown, but I can only address a single value to the list. And it does something very weird with the Operations Parameters order: if i have scenario, device, *args it presents scenario, args, device and even when I connect the correct values it switches the order. When I omit the astersik, everything is as it should. TL;DR; I have to accept TestComplete does not really support these typical pythonic constructs **kwargs and *args as Operation Parameters in keyword tests that call scripted code. What to do now? I do not want to name every possible field in the parameter list of the script because this is ugly, not pythonic and worst of all: the number of fields may change in the (near) future So there must be a way in the data driven loop to tell TestComplete that it takes a whole row and adresses it to a single variable, whatever format. Does anyone have an idea? Regards Ulrich Re: Sys.Browser("chrome") - the object with the specified attributes does not exist SOLVED: it was my fault. The second argument was set to -1 by default. If I omit this, everything works fine. And as a reminder to myself: this is no wait time, but the browser index. Regards Ulrich Sys.Browser("chrome") - the object with the specified attributes does not exist Hi *, Given: - Windows 10 - TC 12.06 - Chrome with all needed addins for TC Description: usually I start Chrome with Run-Command (Browsers.Item[name].Run(self.base_url)), then connectig to it with self.browser = Sys.Browser(browser, wait_millis), where browser is set to *. Works fine ... with *, not if I use "chrome" or "Chrome", but it works Problem: started Chrome manually. Trying to connect with Sys.Browser("chrome") ... does not work. But with "*" it does not work either! Where is my fault? I have no idea anymore. Regards Ulrich SOLVED: it was my fault. The second argument was set to -1 by default. If I omit this, everything works fine. And as a reminder to myself: this is no wait time, but the browser index. SolvedRemote Error Catching Hi *, yesterday I asked how to signal the fail of a remote test to a controlling instance? I solved it by setting a flag-variable on networksuite level by onerror_log event handler in the remote test. On the controlling instance I look up whether it was set and if, I do what has to be done. Seems not so elegant to me, if anyone has an idea how to perform this with built-in features of tc? Regards Ulrich SolvedRe: Remote Error Catching Hi Alex, my first post was a little bit lengthy, so I shortend it. So in principle it is the original post here. I will make this clearer in the o.p. Why I don't like my approach: I thought there would be some "automagic" from TC that makes it possible to ask for the return status of a remote job. Something one knows from parallel processing, kind of "spawn-wait" mechanism. The benefit from s.th. like this might be one does not have to setup all the networksuite variable stuff for sending return or status info between remote test and the controller. Especially if you have plenty of remotes running parallel it is a little bit tricky to sync it all - what will now come up as the next task for me :-/. Regards Ulrich