ISSUE
QTP Visibility issue with Flex objects ? [visible=false or .exist does not work as expected]
SOLUTION
While working with a client on a bug logged : http://bugs.adobe.com/jira/browse/FLEXENT-1283
we came across the following,
With SDK 3.2 and 3.5
if we toggle the visibility of a container, you would not get the desired result for automation for children within the container.
-we will get an .exist or getROProperty(“Visible”) to work
only if, not just the container holding the components is set to visible=false but the components inside [children] are set to visible=false explicitly
-we will be able to highlight the components once they are invisible.
Reason being that setting the visibility to false does not remove the component form the display tree hence it would still exist and get highlighted using QTP.
This sample application and automation scripts can repro the issue
Please refer “TestVisibility” Code and automation scripts.
Kindly try the approach used in the “testFormITemRemoval” application as another work around
which uses Flex States to remove items, this will give you the right results.
i.e.
-we get an .exist or getROProperty(“Visible”) set to False i.e. to work once the items inside the Form item are invisible [Department Form Item is removed using states]
-we cannot highlight the components once they are invisible [ if we try we get the error as seen in the bottom right hand corner of the image below]
the Flex application and code and automation scripts are mentioned below.
Refer :
“testFormITemRemoval” Code and automation scripts
“testFormITemRemoval” image

“TestVisibility” image

ADDITIONAL INFORMATION
“testFormITemRemoval” Automation Scripts :
test2=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexRadioButton(“Department:it”).Exist
print “Department IT radio button Exists : “&test2
DepItVisible=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexRadioButton(“Department:it”).GetROProperty(“visible”)
print “Department IT visible : ” &DepItVisible
test3=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexRadioButton(“Department:accounts”).Exist
print “Department Accounts Radio button Exists : ” &test3
DepAccountVisible=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexRadioButton(“Department:accounts”).GetROProperty(“visible”)
print “Department Accounts Visible :”&DepAccountVisible
test4=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexTextArea(“Department:departmentid”).Exist
print “Department id TextInput Exists : ” &test4
DepIdTextBoxVisible=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexTextArea(“Department:departmentid”).GetROProperty(“visible”)
print “Department Accounts Visible :”&DepIdTextBoxVisible
Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexButton(“employeesOnlyButton”).Click
Print “AFTER FORM ITEM DEPARTMENT REMOVAL”
test2=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexRadioButton(“Department:it”).Exist(5)
print “Department IT radio button Exists : “&test2
DepItVisible=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexRadioButton(“Department:it”).GetROProperty(“visible”)
print “Department IT visible : ” &DepItVisible
test3=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexRadioButton(“Department:accounts”).Exist(5)
print “Department Accounts Radio button Exists : ” &test3
DepAccountVisible=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexRadioButton(“Department:accounts”).GetROProperty(“visible”)
print “Department Accounts Visible :”&DepAccountVisible
test4=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexTextArea(“Department:departmentid”).Exist
print “Department id TextInput Exists : ” &test4
DepIdTextBoxVisible=Browser(“Browser”).FlexApplication(“VisibilityIssueWachovia1819841″).FlexForm(“loginForm”).FlexTextArea(“Department:departmentid”).GetROProperty(“visible”)
print “Department Accounts Visible :”&DepIdTextBoxVisible
“testFormITemRemoval” Application Code :
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”vertical” minWidth=”955″ minHeight=”600″>
<mx:states>
<mx:State name=”hideFormItem”>
<mx:RemoveChild target=”{department}”/>
<mx:RemoveChild target=”{employeesOnlyButton}”/>
</mx:State>
</mx:states>
<mx:Form id=”loginForm” automationName=”loginForm”>
<mx:FormItem id=”username” automationName=”username” label=”Username” direction=”horizontal”>
<mx:TextInput id=”usernameInput” automationName=”usernameInput”/>
</mx:FormItem>
<mx:FormItem id=”password” automationName=”password” label=”Password” direction=”horizontal”>
<mx:TextInput id=”passwordInput” automationName=”passwordInput”/>
</mx:FormItem>
<mx:FormItem id=”department” automationName=”department” label=”Department” direction=”vertical”>
<mx:RadioButton id=”it” automationName=”it” label=”IT”/>
<mx:RadioButton id=”accounts” automationName=”accounts” label=”Accounts”/>
<mx:TextInput id=”departmentid” automationName=”departmentid” text=”Enter Department ID”/>
</mx:FormItem>
<mx:FormItem direction=”horizontal”>
<mx:Button id=”loginButton” automationName=”loginButton” label=”Login”/>
<mx:Button id=”employeesOnlyButton” automationName=”employeesOnlyButton” label=”Employees Only” click=”currentState=‘hideFormItem’“/>
</mx:FormItem>
</mx:Form>
</mx:Application>
“TestVisibility” Automation Scripts :
test2=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexRadioButton(“Department:it”).Exist
print “Department IT radio button Exists : “&test2
DepItVisible=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexRadioButton(“Department:it”).GetROProperty(“visible”)
print “Department IT visible : ” &DepItVisible
test3=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexRadioButton(“Department:accounts”).Exist
print “Department Accounts Radio button Exists : ” &test3
DepAccountVisible=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexRadioButton(“Department:accounts”).GetROProperty(“visible”)
print “Department Accounts Visible :”&DepAccountVisible
test4=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexTextArea(“Department:departmentid”).Exist
print “Department id TextInput Exists : ” &test4
DepIdTextBoxVisible=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexTextArea(“Department:departmentid”).GetROProperty(“visible”)
print “Department Accounts Visible :”&DepIdTextBoxVisible
Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexButton(“employeesOnlyButton”).Click
Print “AFTER FORM ITEM DEPARTMENT REMOVAL”
test2=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexRadioButton(“Department:it”).Exist(5)
print “Department IT radio button Exists : “&test2
DepItVisible=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexRadioButton(“Department:it”).GetROProperty(“visible”)
print “Department IT visible : ” &DepItVisible
test3=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexRadioButton(“Department:accounts”).Exist(5)
print “Department Accounts Radio button Exists : ” &test3
DepAccountVisible=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexRadioButton(“Department:accounts”).GetROProperty(“visible”)
print “Department Accounts Visible :”&DepAccountVisible
test4=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexTextArea(“Department:departmentid”).Exist
print “Department id TextInput Exists : ” &test4
DepIdTextBoxVisible=Browser(“Browser”).FlexApplication(“testVisibility”).FlexForm(“loginForm”).FlexTextArea(“Department:departmentid”).GetROProperty(“visible”)
print “Department Accounts Visible :”&DepIdTextBoxVisible
“TestVisibility” Application Code :
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”vertical” minWidth=”955″ minHeight=”600″>
<mx:Form id=”loginForm” automationName=”loginForm”>
<mx:FormItem id=”username” automationName=”username” label=”Username” direction=”horizontal”>
<mx:TextInput id=”usernameInput” automationName=”usernameInput”/>
</mx:FormItem>
<mx:FormItem id=”password” automationName=”password” label=”Password” direction=”horizontal”>
<mx:TextInput id=”passwordInput” automationName=”passwordInput”/>
</mx:FormItem>
<mx:FormItem id=”department” automationName=”department” label=”Department” direction=”vertical”>
<mx:RadioButton id=”it” automationName=”it” label=”IT”/>
<mx:RadioButton id=”accounts” automationName=”accounts” label=”Accounts”/>
<mx:TextInput id=”departmentid” automationName=”departmentid” text=”Enter Department ID”/>
</mx:FormItem>
<mx:FormItem direction=”horizontal”>
<mx:Button id=”loginButton” automationName=”loginButton” label=”Login”/>
<mx:Button id=”employeesOnlyButton” automationName=”employeesOnlyButton” label=”Employees Only” click=”{department.visible=false;}”/>
</mx:FormItem>
</mx:Form>
</mx:Application>