Unable to find DotNetBar control
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2010
11:22 PM
03-28-2010
11:22 PM
Unable to find DotNetBar control
We are using DotNetbar controls from here: http://www.devcomponents.com/dotnetbar/download.aspx
Our application is using ribbon controls from the package.
The ribbon controls have the next hieararchy
-RibbonControl
--RibbonPanel
--RibbonBar
--ItemContainer
--Buttons and other simple controls
My problem is that TestComplete doesn't see ItemContainer control and anything below it. The buttons on it are not searchable by Find\FindChildren methods.
Our application is using ribbon controls from the package.
The ribbon controls have the next hieararchy
-RibbonControl
--RibbonPanel
--RibbonBar
--ItemContainer
--Buttons and other simple controls
My problem is that TestComplete doesn't see ItemContainer control and anything below it. The buttons on it are not searchable by Find\FindChildren methods.
Controls.Count property of RibbonBar always returns 0.
Is there a workaround to this issue?
6 REPLIES 6
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-30-2010
04:57 AM
03-30-2010
04:57 AM
Hi Olexandr,
We've reproduced the behavior here and currently we are investigating the issue.
As a workaround, you can try setting the Depth parameter of the Find (FindChild) method to 1. This approach works fine on our side. Please see the Find Method article for details.
If the suggestion does not help, please zip the entire project suite folder along with the test execution logs and send us the archive.
Also, you can vote for the control in this survey.
We've reproduced the behavior here and currently we are investigating the issue.
As a workaround, you can try setting the Depth parameter of the Find (FindChild) method to 1. This approach works fine on our side. Please see the Find Method article for details.
If the suggestion does not help, please zip the entire project suite folder along with the test execution logs and send us the archive.
Also, you can vote for the control in this survey.
--
Dmitry Nikolaev
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
Dmitry Nikolaev
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-30-2010
07:36 PM
03-30-2010
07:36 PM
Hi David,
Thank you for your reply.
What property(ies) and value(s) did you use to find ItemContainer using Find method?
BR,
Olexandr
Thank you for your reply.
What property(ies) and value(s) did you use to find ItemContainer using Find method?
BR,
Olexandr
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-30-2010
08:54 PM
03-30-2010
08:54 PM
Hi,
Actually, we did not find a way to find the ItemContainer object. It is not displayed in the OB and cannot be located from script. However, we succeeded to find the buttons in the container. We used the Text property to locate the buttons.
Please note that for our sample application, the child objects of the target ItemContainer control are displayed in the OB. If the behavior is different on your side, please send us a sample application demonstrating the issue. Also, please send us your project. You can get in touch with us via the Contact Support web form.
Actually, we did not find a way to find the ItemContainer object. It is not displayed in the OB and cannot be located from script. However, we succeeded to find the buttons in the container. We used the Text property to locate the buttons.
Please note that for our sample application, the child objects of the target ItemContainer control are displayed in the OB. If the behavior is different on your side, please send us a sample application demonstrating the issue. Also, please send us your project. You can get in touch with us via the Contact Support web form.
--
Dmitry Nikolaev
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
Dmitry Nikolaev
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-30-2010
10:29 PM
03-30-2010
10:29 PM
Please find a sample application in attachment.
Here is the script I tried to find the button and it didn't work for me:
Here is the script I tried to find the button and it didn't work for me:
Dim PropArray, ValuesArray
Dim RibbonBar
Set RibbonBar= Sys.Process("SampleDNB").WinFormsObject("Form1").WinFormsObject("MainRibbon").WinFormsObject("OrganizationRibbonPanel").WinFormsObject("OrganizationCreateBar")
Dim Button
PropArray = Array("Text")
ValuesArray = Array("Test1")
Set Button=RibbonBar.Find(PropArray,ValuesArray,1)
Log.Message Button.Exists
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-31-2010
05:54 AM
03-31-2010
05:54 AM
Hi Olexandr,
Thank you for the sample.
I suggest that you work with the target controls via their native properties and methods. The following script demonstrates how to click the Test1 button:
Sub Main
Dim p, wMain, wRibbonBar, strItem
Set p = Sys.Process("SampleDNB")
Set wMain = p.WinFormsObject("Form1")
wMain.Activate
Set wRibbonBar = wMain.WinFormsObject("MainRibbon").WinFormsObject("OrganizationRibbonPanel").WinFormsObject("OrganizationCreateBar")
strItem = "Test1"
If clickItem(wRibbonBar, strItem) Then
Log.Message "The '" & strItem & "' item was successfully clicked."
Else
Log.Error "The '" & strItem & "' item was not found."
End If
End Sub
Function clickItem(wRibbonBar, strItem)
Dim oCont, itemCount, itemId, itemObj, bounds, mainBounds
clickItem = False
Set oCont = wRibbonBar.Items.Item(0)' Looks like It is the Container object
itemCount = oCont.SubItems.Count
For itemId = 0 To itemCount - 1
Set itemObj = oCont.SubItems.Item(itemId)
If SameText(itemObj.Text, strItem) Then
Set bounds = itemObj.AccessibleObject.Bounds
Set mainBounds = wRibbonBar.AccessibilityObject.Bounds
Log.LockEvents(1)
Call wRibbonBar.Click(bounds.Left - mainBounds.Left + bounds.Width / 2, bounds.Top - mainBounds.Top + bounds.Height / 2)
Log.UnlockEvents
Log.Event "The '" & strItem & "' item was clicked."
clickItem = True
Exit Function
End If
Next
End Function
Also, you can use MSAA to address the target buttons. To do this, you need to add the WindowsForms* window class to the list of accepted MSAA windows (right-click your project in Project Explorer | Edit | Properties | Open Applications | MSAA). See the Testing With Microsoft Active Accessibility article for information.
I hope this helps.
Best regards,
Alexey
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-31-2010
06:38 PM
03-31-2010
06:38 PM
Thank you Allen!
The suggested approach works perfectly.
BR,
Olexandr
The suggested approach works perfectly.
BR,
Olexandr
