Ask a Question

How to handle dynamic powerbuilder DataWindow?

arorasaksham
New Contributor

How to handle dynamic powerbuilder DataWindow?

Hi,

 

I am working on a powerbuilder application having dynamic pbdw control. The rows are loaded based on some filter criteria. I am not able to identify objects in the application. However if i try to spy application which has pre loaded data, i can identify them correctly.

 

for e.g. in the below code. The objExpectationIds doesnt return anything . But if application is preloaded with data before execution it works. Please help

 

PropNames=Array("Caption","ObjectType")

PropValue=Array("expectation_id","Edit")

objExpectationIds=expectationPanel.FindAllChildren(PropNames,PropValue,5)

Log.Message("")

For i=0 to UBound(objExpectationIds)

 

if(objExpectationIds(i).Value="82286") then

objExpectationIds(i).Click

Exit For

end if

Next

 

4 REPLIES 4
TanyaYatskovska
SmartBear Alumni (Retired)

Hi Arorasaksham,

 

Try using the Refresh method to update the object tree before accessing its content.

 

---------
Tanya Yatskovskaya
SmartBear Community and Education Manager



Hi Tanya,

 

Thanks for response, but refresh doesn't work. Since the datawindow is dynamic and the object browser is not getting refreshed. The object browser is getting freezed for first available instance of data window. Even the spy is not working.

 

I have tried refreshing already (both by code as well as through object browser). I think this issue is specific to Powerbuilder and testcomplete only.

 

 

 

Tania, I'm customer with TestComplete having more than 4 licenses and im myself TestComplete Certified. I'm also having the same issue with dynamic datawindow elements. On some areas TestComplete sticks to the status of first read elements within dynamic DataWindow elements and doesnt update the future populated objects. I have tried sys.refresh method, delaying script before reading the next object or calling for sys.refreshmappinginfo nothing seems to work. I can also verify that the Object Browser actually gets stuck to the last state and doesnt recognize a change within the area to reload the data probably. Please guide me if there is any way to reload the MSAA plugin on runtime which seems to help get the correct status back? or maybe the sys.refresh function needs improvement for this area? Thanks. Best Regards Umer

I am having the same.

 

Its TC bug i guees.

 

What i did is:

num = panel.ChildCount
x=0
rows_number=0
while (x<num):
if(panel.child(x).Caption=="zn" and panel.child(x).Visible == 1):
    rows_number=rows_number+1
    x=x+1
Log.Message("rows_number: ")
Log.Message(rows_number) 

 

Problem is that u can only tests  filter that give back less rows than i can see on my screen cause the rest gonna have visible=0.

 

Looks like TC cant delete child on refresh - he only refresh properties - so only way is couting on properties.

cancel
Showing results for 
Search instead for 
Did you mean: