OK, I guess I'm not understanding... are there multiple pages? Or are you on a single page and looking for information within a table?
If there are multiple pages, I'm not sure I understand how Selenium can find information on a page that is not currently being rendered by the browser. You still need to navigate to the next page in order to check what's on screen, right? Of course, I'm not well versed in Selenium so there could be things that it's doing that I don't know about.
TestComplete does it's testing by interacting with objects that are present within the application at the time of interaction. So, if you have a page on screen with particular content, TestComplete can interact with anything on that page at any time so long as the page itself is not changing. Even if components within the page change, TestComplete sees it as the same page because it is the same URL. Now, does the page reload after I click on something? Potentially, it does, depending upon how the page is coded. But that isn't always the case. In any case, if there is a table on a page with content and I'm checking for that content, I don't need to refresh the page each time, all I need to do is traverse the table.
Now... it SEEMS that your problem is finding the table... You're using XPath which, OK, works... but is it strictly necessary?
You can map the table on the page using NameMapping and Aliases. Say I have a table on a page. It has a property of RowCount. I want to search the table for something and, if I can't find it, go to the next page. Here's what I'd do. Pseudocode, mind you.
function findMyText(textToFind) {
var page, table, tableContent;
page = Sys.Browser().Page('*'); //returns whatever page you happen to be on
while (!textFound) {
table = page.FindChild(['ObjectType','idStr'],['Table', 'myTableIdentifier'], 30); // This is a bit rough but the general idea is that you want to find the specific table on the current page based upon a set of known properties and values
tableContent = table.FindChild('contentText', textToFind, 3);
if (tableContent.Exists) {
textFound = true;
return tableContent;
}
}
return null;
}
You're not traversing the whole DOM this way, you're simply finding the table in the hierarchy of the object tree and using it. You'd call this function from someplace else then where, if the result returns null, go to the next page. If it returns something not null, you have your object.