When I use ToolBarSendCommand for a command that will cause a new dialog to open, the dialog opens as expected but the method does not return until I manually close the dialog. After I manually close the dialog it will return 0.
I would guess that Ranorex is waiting on something before returning, but what and is there a way to bypass this check?
Thanks,
-Dom
ToolBarSendCommand doesn't return when command opens dialog
- Support Team
- Site Admin
- Posts: 12145
- Joined: Fri Jul 07, 2006 4:30 pm
- Location: Houston, Texas, USA
- Contact:
Can you please try the following code with wordpad:
Does this work for you?
Jenö
Ranorex Support Team
Code: Select all
__version__ = 1, 0, 0
import sys, optparse, imp
# RanorexPython will be loaded dynamically from Ranorex\Bin\Net2.0
# sys.path[0] is the directory containing this script (Ranorex\Scripts)
# Please copy the correct RanorexPython version into the Ranorex\Bin\Net2.0
# directory if you use another Python version than Python2.4
index = sys.path[0].rfind('\\')
RANOREX_BINPATH = sys.path[0][0:index] + '\\Bin\\Net2.0-Pro\\'
print RANOREX_BINPATH
Ranorex = imp.load_dynamic('RanorexPython', RANOREX_BINPATH + 'RanorexPython.dll')
TESTED_APPLICATION = 'Wordpad.exe'
TESTED_APPLICATION_TITLE = 'Document - WordPad'
def printerror(*args):
msg = ' '.join(args)
sys.stderr.write(msg)
sys.stderr.write("\n")
def main():
sleeptime = 10
application = TESTED_APPLICATION
print '---------------------------------------------------------------------'
print ' Activating Form: ' + TESTED_APPLICATION_TITLE
print '---------------------------------------------------------------------'
form = Ranorex.FormFindTitle(TESTED_APPLICATION_TITLE)
if form == 0:
print ' Form not found, starting application...' + application
ret=Ranorex.ApplicationStart("C:\\Program Files\\Windows NT\\Accessories\\wordpad.exe")
if ret != 0:
print '\nERROR: Cannot start application: ' + application
return 3
print ' Activating test application...'
form=Ranorex.FormFindTitle(TESTED_APPLICATION_TITLE,Ranorex.MATCH_EXACT,1,5000)
if form == 0:
print 'Error: Form not found'
return 4
print ' Form found, form=' + hex(form)
print '--------------------------------------------------------------------'
print ' Searching and testing a toolbar'
print '---------------------------------------------------------------------'
print ' searching tool bar by control id'
toolbar=Ranorex.FormFindChildControlId(form, 59392)
if toolbar == 0:
print 'ERROR: toolbar not found'
return 5
print ' toolbar=' + hex(toolbar)
print ' moving the mouse to the control'
Ranorex.MouseMoveToControl(toolbar)
itemCount = Ranorex.ToolBarGetItemCount(toolbar)
print ' ItemCount=' + str(itemCount)
for i in range(itemCount):
commandId = Ranorex.ToolBarGetItemCommandId(toolbar, i);
print ' commandId= ' + str(commandId)
if Ranorex.ToolBarClickItem(toolbar, 57603) != 0:
print 'ERROR: clicking toolbar item'
return 5
# Dialog open needs a little bit time
Ranorex.Sleep(1000)
saveas = Ranorex.FormFindTitle("Save As")
if saveas == 0:
print 'ERROR: cannot find save as dialog'
return 6
cancel = Ranorex.FormFindChildText(saveas, 'Cancel')
if cancel != 0:
Ranorex.MouseClickControl(cancel)
Ranorex.Sleep(2000)
print '--------------------------------------------------------------------'
print ' Closing application: ' + TESTED_APPLICATION_TITLE
print '---------------------------------------------------------------------'
Ranorex.FormClose(form)
print 'End'
return 0
if __name__ == "__main__":
ret = main()
sys.exit(ret)
Jenö
Ranorex Support Team
No, that doesn't work for me.
The reason I want to use ToolBarSendCommand is the the command I want to send is hidden in a menu. I've tried clicking the parent menu item and then the item I want but the menu that opens is no longer part of the toolbar. For toolbar items that are visible I can use ToolBarClickItem and it works fine.
Thanks,
-Dom
The reason I want to use ToolBarSendCommand is the the command I want to send is hidden in a menu. I've tried clicking the parent menu item and then the item I want but the menu that opens is no longer part of the toolbar. For toolbar items that are visible I can use ToolBarClickItem and it works fine.
Thanks,
-Dom
Code: Select all
H:\>wordpad.py
C:\Program Files\Ranorex 1.3\Bin\Python2.5\
---------------------------------------------------------------------
Activating Form: Document - WordPad
---------------------------------------------------------------------
Form not found, starting application...Wordpad.exe
Activating test application...
Form found, form=0x8070c
--------------------------------------------------------------------
Searching and testing a toolbar
---------------------------------------------------------------------
searching tool bar by control id
toolbar=0x70706
moving the mouse to the control
ItemCount=15
commandId= 57600
commandId= 57601
commandId= 57603
commandId= 0
commandId= 57608
commandId= 57609
commandId= 0
commandId= 57636
commandId= 0
commandId= 57635
commandId= 57634
commandId= 57637
commandId= 57643
commandId= 0
commandId= 32778
ERROR: cannot find save as dialog
- Support Team
- Site Admin
- Posts: 12145
- Joined: Fri Jul 07, 2006 4:30 pm
- Location: Houston, Texas, USA
- Contact:
Yes, that's right it's normally a popup menu.I've tried clicking the parent menu item and then the item I want but the menu that opens is no longer part of the toolbar.
Please check the class name of this popup menu with RanorexSpy (you should enable the HotTracker).
If it's #32768 (like in Wordpad if you open the color popup) then you can use the function PopupMenuSelectItem() for selecting an item in the popup menu.
Jenö
Ranorex Support Team