GNOME Bugzilla – Bug 340734
The (tree API) sample program does not run to completion
Last modified: 2006-07-14 17:18:50 UTC
Please describe the problem: The (tree API) sample program here: http://cvs.gnome.org/viewcvs/dogtail/examples/gedit-test-utf8-tree-api.py?rev=1.3&view=markup doesn't run successfully. It cannot locate the 'Desktop' dir into which it should save the output file from the tests. I made the following changes and it seems to work: #!/usr/bin/env python # Dogtail demo script using tree.py # FIXME: Use TC. __author__ = 'Zack Cerza <zcerza@redhat.com' from dogtail import tree from dogtail.utils import run from time import sleep from os import environ, path, remove environ['LANG']='en_US.UTF-8' # Remove the output file, if it's still there from a previous run if path.isfile(path.join(path.expandvars("$HOME"), "Desktop", "UTF8demo.txt")): remove(path.join(path.expandvars("$HOME"), "Desktop", "UTF8demo.txt")) # Start gedit. run("gedit") # Get a handle to gedit's application object. gedit = tree.root.application('gedit') # Get a handle to gedit's text object. textbuffer = gedit.child(roleName = 'text') # Load the UTF-8 demo file. from sys import path utfdemo = file(path[0] + '/data/UTF-8-demo.txt') # Load the UTF-8 demo file into gedit's text buffer. textbuffer.text = utfdemo.read() # Get a handle to gedit's File menu. filemenu = gedit.menu('File') # Get a handle to gedit's Save button. savebutton = gedit.button('Save') # Click the button savebutton.click() # Get a handle to gedit's Save As... dialog. saveas = gedit.dialog('Save as...') # We want to save to the file name 'UTF8demo.txt'. saveas.child(roleName = 'text').text = 'UTF8demo.txt' # Save the file on the Desktop # Don't make the mistake of only searching by name, there are multiple # "Desktop" entires in the Save As dialog - you have to query for the # roleName too - see the on-line help for the Dogtail "tree" class for # details desktop = saveas.child('Desktop', roleName='table cell') desktop.actions['activate'].do() # Click the Save button. saveas.button('Save').click() # Let's quit now. filemenu.menuItem('Quit').click() Steps to reproduce: 1. 2. 3. Actual results: Expected results: Does this happen every time? Other information:
Sorry about that - I should have included a diff - thanks to David Malcolm for pointing that out! ;-) $ diff -up gedit-test-utf8-tree-api.py modified_tree.py --- gedit-test-utf8-tree-api.py 2006-05-05 09:48:37.000000000 -0400 +++ tree.py 2006-04-24 11:25:16.000000000 -0400 @@ -11,7 +11,7 @@ environ['LANG']='en_US.UTF-8' # Remove the output file, if it's still there from a previous run if path.isfile(path.join(path.expandvars("$HOME"), "Desktop", "UTF8demo.txt")): - remove(path.join(path.expandvars("$HOME"), "Desktop", "UTF8demo.txt")) + remove(path.join(path.expandvars("$HOME"), "Desktop", "UTF8demo.txt")) # Start gedit. run("gedit") @@ -44,11 +44,18 @@ saveas = gedit.dialog('Save as...') # We want to save to the file name 'UTF8demo.txt'. saveas.child(roleName = 'text').text = 'UTF8demo.txt' -# Let's save it to the desktop. -saveas.menuItem('Desktop').click() +# Save the file on the Desktop -# Click the Save button. +# Don't make the mistake of only searching by name, there are multiple +# "Desktop" entires in the Save As dialog - you have to query for the +# roleName too - see the on-line help for the Dogtail "tree" class for +# details +desktop = saveas.child('Desktop', roleName='table cell') +desktop.actions['activate'].do() + +# Click the Save button. saveas.button('Save').click() # Let's quit now. -filemenu.menuItem('Quit').click() +filemenu.menuItem('Quit').click() +
I can't get this to apply. Can you include the patch as an attachment?
Created attachment 68563 [details] [review] Patch file - better late than never
Thanks, Len. I did make one change to your patch. While this: desktop.actions['activate'].do() does indeed work, this is the "official" method: desktop.doAction('activate')