* Add 0.4.0 release notes
This commit is contained in:
parent
e54edace88
commit
70a9c2b4a7
@ -2,6 +2,53 @@
|
|||||||
Change Log
|
Change Log
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
0.4.0 Various cleanup and bug fixes.
|
||||||
|
------------------------------------------------------------------
|
||||||
|
03-April-2010
|
||||||
|
* Gracefully Handle dir() calls on Application or WindowSpecification objects
|
||||||
|
(which used hang for a while as these classes would search for windows
|
||||||
|
matching __members__, __methods__ and __bases__). The code now checks for
|
||||||
|
any attribute that starts with '__' and ends with '__' and raises
|
||||||
|
AttributeError immediately. Thanks to Sebastian Haase for raising this.
|
||||||
|
|
||||||
|
* Removed the reference to an Application object in WindowSpecification.
|
||||||
|
It was not used in the class and made the class harder to use.
|
||||||
|
WindowSpecification is now more useful as a utility class.
|
||||||
|
|
||||||
|
* Add imports of application.WindowSpecification and application.Application
|
||||||
|
to pywinauto.__init__.py so that these classes can be used more easily
|
||||||
|
(without having to directly import pywinauto.application). Thanks again to
|
||||||
|
Sebastian Haase.
|
||||||
|
|
||||||
|
* Added a function to empty the clipboard (thanks to Tocer on Sourceforge)
|
||||||
|
|
||||||
|
* Use 'SendMessageTimeout' to get the text of a window. (SendMessage will hang
|
||||||
|
if the application is not processing messages)
|
||||||
|
|
||||||
|
* Fixed references to PIL.ImageGrab. PIL add's it's module directly to the
|
||||||
|
module path, so it should just be referenced by ImageGrab and not
|
||||||
|
PIL.ImageGrab.
|
||||||
|
|
||||||
|
* Use AttachThreadInput + PostMessage rather than SendMessageTimeout to send
|
||||||
|
mouse clicks.
|
||||||
|
|
||||||
|
* Fix how timeout retry times are calculated in timings.WaitUntil() and
|
||||||
|
timings.Wait
|
||||||
|
|
||||||
|
* Fixed some issues with application.Kill_() method, highlighted due to the
|
||||||
|
changes in the HwndWrapper.Close() method.
|
||||||
|
|
||||||
|
* Fix writing images to XML. It was broken with updates to PIL that I had not
|
||||||
|
followed. Changed the method of knowing if it is an image by checking for
|
||||||
|
various attributes.
|
||||||
|
|
||||||
|
* Renamed WindowSpecification.(Ww)indow() to ChildWindow() and added
|
||||||
|
deprecation messages for the other functions.
|
||||||
|
|
||||||
|
* Improved the tests (fixed test failures which were not pywinauto issues)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
0.3.9 Experimental! New Sendkeys, and various fixes
|
0.3.9 Experimental! New Sendkeys, and various fixes
|
||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
27-November-2009
|
27-November-2009
|
||||||
@ -10,35 +57,35 @@ Change Log
|
|||||||
A replacement that supports Unicode is included with pywinauto. (hopefully
|
A replacement that supports Unicode is included with pywinauto. (hopefully
|
||||||
soon to be released as a standalone module). Please note - this is still
|
soon to be released as a standalone module). Please note - this is still
|
||||||
quite untested so this release should be treated with some care..
|
quite untested so this release should be treated with some care..
|
||||||
|
|
||||||
* Made sure that default for WindowSpecification.Window_() was to look
|
* Made sure that default for WindowSpecification.Window_() was to look
|
||||||
for non top level windows. The defaults in find_windows() had been
|
for non top level windows. The defaults in find_windows() had been
|
||||||
changed previously and it now needed to be explicitly overridden.
|
changed previously and it now needed to be explicitly overridden.
|
||||||
|
|
||||||
* Fixed a missing reference to 'win32defines' when referencing WAIT_TIMEOUT
|
* Fixed a missing reference to 'win32defines' when referencing WAIT_TIMEOUT
|
||||||
another typo of false (changed to False)
|
another typo of false (changed to False)
|
||||||
|
|
||||||
* Removed the restriction to only get the active windows for the process,
|
* Removed the restriction to only get the active windows for the process,
|
||||||
now it will be possible to get the active windows, even if a process is
|
now it will be possible to get the active windows, even if a process is
|
||||||
not specified.
|
not specified.
|
||||||
From http://msdn.microsoft.com/en-us/library/ms633506%28VS.85%29.aspx
|
From http://msdn.microsoft.com/en-us/library/ms633506%28VS.85%29.aspx
|
||||||
it gets the active window for the foreground thread.
|
it gets the active window for the foreground thread.
|
||||||
|
|
||||||
* Hopefully improved Delphi TreeView and ListView handling (added window
|
* Hopefully improved Delphi TreeView and ListView handling (added window
|
||||||
class names as supported window classes to the appropriate classes).
|
class names as supported window classes to the appropriate classes).
|
||||||
|
|
||||||
* Added support for running UI tests with reference controls. (requried
|
* Added support for running UI tests with reference controls. (requried
|
||||||
for some localization tests)
|
for some localization tests)
|
||||||
|
|
||||||
* Various PyLint and PEP8 fixes made.
|
* Various PyLint and PEP8 fixes made.
|
||||||
|
|
||||||
|
|
||||||
0.3.8 Collecting improvements from last 2 years
|
0.3.8 Collecting improvements from last 2 years
|
||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
10-March-2009
|
10-March-2009
|
||||||
|
|
||||||
* Fixed toolbar button pressing - This required for
|
* Fixed toolbar button pressing - This required for
|
||||||
HwndWrapper.NotifyParent() to be updated (to accept a new
|
HwndWrapper.NotifyParent() to be updated (to accept a new
|
||||||
ID parameter)
|
ID parameter)
|
||||||
|
|
||||||
* Fixed a bug wherea listview without a column control would
|
* Fixed a bug wherea listview without a column control would
|
||||||
@ -46,7 +93,7 @@ Change Log
|
|||||||
|
|
||||||
* Converted documenation from Pudge generated to Sphinx Generated
|
* Converted documenation from Pudge generated to Sphinx Generated
|
||||||
|
|
||||||
* Added some baic support for Pager and Progress controls
|
* Added some baic support for Pager and Progress controls
|
||||||
(no tests yet)
|
(no tests yet)
|
||||||
|
|
||||||
* Added some more VB 'edit' window classes
|
* Added some more VB 'edit' window classes
|
||||||
@ -54,88 +101,88 @@ Change Log
|
|||||||
* Added some more VB 'listbox' window classes
|
* Added some more VB 'listbox' window classes
|
||||||
|
|
||||||
* Added some more VB 'button' window classes
|
* Added some more VB 'button' window classes
|
||||||
|
|
||||||
* Ensured that return value from ComboBoxWrapper.SelectedIndices
|
* Ensured that return value from ComboBoxWrapper.SelectedIndices
|
||||||
is always a tuple (there was a bug where it would sometimes be
|
is always a tuple (there was a bug where it would sometimes be
|
||||||
a ctypes array)
|
a ctypes array)
|
||||||
|
|
||||||
* Changed default for finding windows to find disabled windows
|
* Changed default for finding windows to find disabled windows
|
||||||
as well as enabled ones (previous was to find enabled windows only)
|
as well as enabled ones (previous was to find enabled windows only)
|
||||||
(note this may impact scripts that relied on the previous
|
(note this may impact scripts that relied on the previous
|
||||||
setting i.e. in cases where two dialogs have the same title!)
|
setting i.e. in cases where two dialogs have the same title!)
|
||||||
|
|
||||||
* Much better handling of InvalidWindowHandle during automation
|
* Much better handling of InvalidWindowHandle during automation
|
||||||
runs. This could be raised when a closing window is still available
|
runs. This could be raised when a closing window is still available
|
||||||
when the automation was called, but is gone half way through
|
when the automation was called, but is gone half way through
|
||||||
whatever function was called.
|
whatever function was called.
|
||||||
|
|
||||||
* Made clicking more robust by adding a tiny wait between each
|
* Made clicking more robust by adding a tiny wait between each
|
||||||
SendMessageTimeout in _perform_click().
|
SendMessageTimeout in _perform_click().
|
||||||
|
|
||||||
* Added attributes ``can_be_label`` and ``has_title`` to ``HwndWrapper``
|
* Added attributes ``can_be_label`` and ``has_title`` to ``HwndWrapper``
|
||||||
and subclasses to specify whether a control can act as a label for
|
and subclasses to specify whether a control can act as a label for
|
||||||
other controls, and whether the title should be used for identifying
|
other controls, and whether the title should be used for identifying
|
||||||
the control. If you have created your own HwndWrapper subclasses you
|
the control. If you have created your own HwndWrapper subclasses you
|
||||||
may need to override the defaults.
|
may need to override the defaults.
|
||||||
|
|
||||||
* Added a ``control_id`` parameter to find_windows which allows
|
* Added a ``control_id`` parameter to find_windows which allows
|
||||||
finding windows based off of their control id's
|
finding windows based off of their control id's
|
||||||
|
|
||||||
* Added a FriendlyClassName method to MenuItem
|
* Added a FriendlyClassName method to MenuItem
|
||||||
|
|
||||||
* Split up the functions for button truncation data
|
* Split up the functions for button truncation data
|
||||||
|
|
||||||
* Commented out code to get a new font if the font could not
|
* Commented out code to get a new font if the font could not
|
||||||
be recovered
|
be recovered
|
||||||
|
|
||||||
* Moved code to get the control font from Truncation test to
|
* Moved code to get the control font from Truncation test to
|
||||||
handleprops
|
handleprops
|
||||||
|
|
||||||
* Added a function to get the string representation of the
|
* Added a function to get the string representation of the
|
||||||
bug. (need to refactor PrintBugs at some point).
|
bug. (need to refactor PrintBugs at some point).
|
||||||
|
|
||||||
* Fixed a variable name (from fname -> font_attrib as fname
|
* Fixed a variable name (from fname -> font_attrib as fname
|
||||||
was not a defined variable!)
|
was not a defined variable!)
|
||||||
|
|
||||||
* Forced some return values from MissingExtraString test
|
* Forced some return values from MissingExtraString test
|
||||||
to be Unicode
|
to be Unicode
|
||||||
|
|
||||||
* Fixed the MiscValues test (converted to Unicode and
|
* Fixed the MiscValues test (converted to Unicode and
|
||||||
removed some extraneous characters)
|
removed some extraneous characters)
|
||||||
|
|
||||||
* Updated the path for all unittests
|
* Updated the path for all unittests
|
||||||
|
|
||||||
* Made two unit tests sligthly more robust and less dependent
|
* Made two unit tests sligthly more robust and less dependent
|
||||||
on computer/app settings
|
on computer/app settings
|
||||||
|
|
||||||
* Updated timing settings for unit tests
|
* Updated timing settings for unit tests
|
||||||
|
|
||||||
* Updated the examples to work in dev environment.
|
* Updated the examples to work in dev environment.
|
||||||
|
|
||||||
|
|
||||||
0.3.7 Merge of Wait changes and various bug fixes/improvements
|
0.3.7 Merge of Wait changes and various bug fixes/improvements
|
||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
10-April-2007
|
10-April-2007
|
||||||
|
|
||||||
* Added Timings.WaitUntil() and Timings.WaitUntilPasses() which
|
* Added Timings.WaitUntil() and Timings.WaitUntilPasses() which
|
||||||
handle the various wait until something in the code. Also
|
handle the various wait until something in the code. Also
|
||||||
refactored existing waits to use these two methods.
|
refactored existing waits to use these two methods.
|
||||||
|
|
||||||
* Fixed a major Handle leak in RemoteMemorBlock class (which is
|
* Fixed a major Handle leak in RemoteMemorBlock class (which is
|
||||||
used extensively for 'Common' controls. I was using OpenHandle
|
used extensively for 'Common' controls. I was using OpenHandle
|
||||||
to open the process handle, but was not calling CloseHandle()
|
to open the process handle, but was not calling CloseHandle()
|
||||||
for each corresponding OpenHandle().
|
for each corresponding OpenHandle().
|
||||||
|
|
||||||
* Added an active_() method to Application class to return the
|
* Added an active_() method to Application class to return the
|
||||||
active window of the application.
|
active window of the application.
|
||||||
|
|
||||||
* Added an 'active' option to WindowSpecification.Wait() and
|
* Added an 'active' option to WindowSpecification.Wait() and
|
||||||
WaitNot().
|
WaitNot().
|
||||||
|
|
||||||
* Some cleanup of the clipboard module. GetFormatName()
|
* Some cleanup of the clipboard module. GetFormatName()
|
||||||
was improved and GetData() made a little more robust.
|
was improved and GetData() made a little more robust.
|
||||||
|
|
||||||
* Added an option to findwindows.find_windows() to find only
|
* Added an option to findwindows.find_windows() to find only
|
||||||
active windows (e.g. active_only = True). Default is False.
|
active windows (e.g. active_only = True). Default is False.
|
||||||
|
|
||||||
* Fixed a bug in the timings.Timings class - timing values are
|
* Fixed a bug in the timings.Timings class - timing values are
|
||||||
@ -143,10 +190,10 @@ Change Log
|
|||||||
intance (self).
|
intance (self).
|
||||||
|
|
||||||
* Updated ElementTree import in XMLHelpers so that it would work
|
* Updated ElementTree import in XMLHelpers so that it would work
|
||||||
on Python 2.5 (where elementtree is a standard module) as well
|
on Python 2.5 (where elementtree is a standard module) as well
|
||||||
as other versions where ElementTree is a separate module.
|
as other versions where ElementTree is a separate module.
|
||||||
|
|
||||||
* Enhanced Item selection for ListViews, TreeViews - it is now
|
* Enhanced Item selection for ListViews, TreeViews - it is now
|
||||||
possible to pass strings and they will be searched for. More
|
possible to pass strings and they will be searched for. More
|
||||||
documentation is required though.
|
documentation is required though.
|
||||||
|
|
||||||
@ -169,9 +216,9 @@ Change Log
|
|||||||
* Fixed a bug in how findbestmatch.FindBestMatches was working.
|
* Fixed a bug in how findbestmatch.FindBestMatches was working.
|
||||||
It would match against text when it should not!
|
It would match against text when it should not!
|
||||||
|
|
||||||
* Updated how timings.Timings.Slow() worked, if any time setting
|
* Updated how timings.Timings.Slow() worked, if any time setting
|
||||||
was less then .2 after 'slowing' then set it to .2
|
was less then .2 after 'slowing' then set it to .2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
0.3.6 Scrolling and Treview Item Clicking added
|
0.3.6 Scrolling and Treview Item Clicking added
|
||||||
@ -181,23 +228,23 @@ Change Log
|
|||||||
* Added parameter to ``_treeview_item.Rectangle()`` to have an option
|
* Added parameter to ``_treeview_item.Rectangle()`` to have an option
|
||||||
to get the Text rectangle of the item. And defaulted to this.
|
to get the Text rectangle of the item. And defaulted to this.
|
||||||
|
|
||||||
* Added ``_treeview_item.Click()`` method to make it easy to click
|
* Added ``_treeview_item.Click()`` method to make it easy to click
|
||||||
on tree view items.
|
on tree view items.
|
||||||
|
|
||||||
* Fixed a bug in ``TreeView.GetItem()`` that was expanding items
|
* Fixed a bug in ``TreeView.GetItem()`` that was expanding items
|
||||||
when it shouldn't.
|
when it shouldn't.
|
||||||
|
|
||||||
* Added ``HwndWrapper.Scroll()`` method to allow scrolling. This
|
* Added ``HwndWrapper.Scroll()`` method to allow scrolling. This
|
||||||
is a very minimal implementation - and if the scrollbars are
|
is a very minimal implementation - and if the scrollbars are
|
||||||
implemented as separate controls (rather then a property of a
|
implemented as separate controls (rather then a property of a
|
||||||
control - this will probably not work for you!). It works for
|
control - this will probably not work for you!). It works for
|
||||||
Notepad and Paint - that is all I have tried so far.
|
Notepad and Paint - that is all I have tried so far.
|
||||||
|
|
||||||
* Added a call to ``HwndWrapper.SetFocus()`` in
|
* Added a call to ``HwndWrapper.SetFocus()`` in
|
||||||
``_perform_click_input()`` so that calls to
|
``_perform_click_input()`` so that calls to
|
||||||
``HwndWrapper.ClickInput()`` will make sure to click on the
|
``HwndWrapper.ClickInput()`` will make sure to click on the
|
||||||
correct window.
|
correct window.
|
||||||
|
|
||||||
|
|
||||||
0.3.5 Moved to Metaclass control wrapping
|
0.3.5 Moved to Metaclass control wrapping
|
||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
@ -209,28 +256,28 @@ Change Log
|
|||||||
|
|
||||||
* Some of the sample files would not run - so I updated them
|
* Some of the sample files would not run - so I updated them
|
||||||
so they would (Thanks to Stefaan Himpe for pointing this out)
|
so they would (Thanks to Stefaan Himpe for pointing this out)
|
||||||
|
|
||||||
* Disabled saving application data (it was still being saved in
|
* Disabled saving application data (it was still being saved in
|
||||||
Application.RecordMatch() even if the rest of the application
|
Application.RecordMatch() even if the rest of the application
|
||||||
data code is disabled. This was causing what appeared to be a
|
data code is disabled. This was causing what appeared to be a
|
||||||
memory leak where pywinauto would keep grabbing more and more
|
memory leak where pywinauto would keep grabbing more and more
|
||||||
memory (especially for controls that contain a lot of
|
memory (especially for controls that contain a lot of
|
||||||
information). Thanks to Frank Martinez for leading me to this).
|
information). Thanks to Frank Martinez for leading me to this).
|
||||||
|
|
||||||
* Added ListViewWrapper.GetItemRect() to enable retrieving the
|
* Added ListViewWrapper.GetItemRect() to enable retrieving the
|
||||||
rectangle for a particular item in the listview.
|
rectangle for a particular item in the listview.
|
||||||
|
|
||||||
* Removed references to _ctrl() method within pywinauto as it
|
* Removed references to _ctrl() method within pywinauto as it
|
||||||
was raising a DeprecationWarning internally even if the user
|
was raising a DeprecationWarning internally even if the user
|
||||||
was not using it.
|
was not using it.
|
||||||
|
|
||||||
|
|
||||||
0.3.4 Fixed issue with latest ctypes, speed gains, other changes
|
0.3.4 Fixed issue with latest ctypes, speed gains, other changes
|
||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
25-Apr-2006
|
25-Apr-2006
|
||||||
|
|
||||||
* The latest version of ctypes (0.9.9.6) removed the code generator
|
* The latest version of ctypes (0.9.9.6) removed the code generator
|
||||||
I was using some generated code in win32functions.py (stdcall). I
|
I was using some generated code in win32functions.py (stdcall). I
|
||||||
was not using those functions so I just commented them out.
|
was not using those functions so I just commented them out.
|
||||||
|
|
||||||
* Started the process of renaming methods of the ``Application`` and
|
* Started the process of renaming methods of the ``Application`` and
|
||||||
@ -240,14 +287,14 @@ Change Log
|
|||||||
|
|
||||||
* Updated how print_control_identifiers works so that it now always
|
* Updated how print_control_identifiers works so that it now always
|
||||||
prints the disambiguated control name. (even for single controls)
|
prints the disambiguated control name. (even for single controls)
|
||||||
|
|
||||||
* Added __hash__ to HwndWrapper so that controls could be dictionary
|
* Added __hash__ to HwndWrapper so that controls could be dictionary
|
||||||
keys.
|
keys.
|
||||||
|
|
||||||
* Caching various information at various points. For example I cache
|
* Caching various information at various points. For example I cache
|
||||||
how well two pieces of text match. For short scripts this has
|
how well two pieces of text match. For short scripts this has
|
||||||
little impact - but for larger script it could well have a major
|
little impact - but for larger script it could well have a major
|
||||||
impact.
|
impact.
|
||||||
Also caching information for controls that cannot change
|
Also caching information for controls that cannot change
|
||||||
e.g. TopLeveParent, Parent, etc
|
e.g. TopLeveParent, Parent, etc
|
||||||
|
|
||||||
@ -256,10 +303,10 @@ Change Log
|
|||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
19-Apr-2006
|
19-Apr-2006
|
||||||
|
|
||||||
* Added a wait for the control to be active and configurable
|
* Added a wait for the control to be active and configurable
|
||||||
sleeps after 'modifying' actions (e.g. Select, Deselect, etc)
|
sleeps after 'modifying' actions (e.g. Select, Deselect, etc)
|
||||||
|
|
||||||
* Fixed Timings.Slow() and Timings.Fast() - they could in certain
|
* Fixed Timings.Slow() and Timings.Fast() - they could in certain
|
||||||
circumstances do the opposite! If you had already set a timing
|
circumstances do the opposite! If you had already set a timing
|
||||||
slower or faster then they would set it then they would blindly
|
slower or faster then they would set it then they would blindly
|
||||||
ignore that and set their own times. I added functionality that
|
ignore that and set their own times. I added functionality that
|
||||||
@ -274,13 +321,13 @@ Change Log
|
|||||||
* Added an argument to HwndWrapper.SendMessageTimeout so that
|
* Added an argument to HwndWrapper.SendMessageTimeout so that
|
||||||
the wait options could be passed in.
|
the wait options could be passed in.
|
||||||
|
|
||||||
* Added HwndWrapper.Close(), Maximize(), Minimize(), Restore()
|
* Added HwndWrapper.Close(), Maximize(), Minimize(), Restore()
|
||||||
and GetShowState().
|
and GetShowState().
|
||||||
|
|
||||||
* Commented out all deprecated methods (will be removed completely
|
* Commented out all deprecated methods (will be removed completely
|
||||||
in some future release).
|
in some future release).
|
||||||
|
|
||||||
* Added Application.kill_() method - which closes all windows and
|
* Added Application.kill_() method - which closes all windows and
|
||||||
kills the application. If the application is asking if you want
|
kills the application. If the application is asking if you want
|
||||||
to save your changes - you will not be able to click yes or no
|
to save your changes - you will not be able to click yes or no
|
||||||
and the application will be killed anyway!.
|
and the application will be killed anyway!.
|
||||||
@ -305,28 +352,28 @@ Change Log
|
|||||||
find the real distance - as we only need to compare values - not have
|
find the real distance - as we only need to compare values - not have
|
||||||
the actual distance. (Thanks to Stefaan Himpe)
|
the actual distance. (Thanks to Stefaan Himpe)
|
||||||
|
|
||||||
* Compiled regular expression patterns before doing the match to
|
* Compiled regular expression patterns before doing the match to
|
||||||
avoid compiling the regular expression for window that is being
|
avoid compiling the regular expression for window that is being
|
||||||
tested (Thanks to Stefaan Himpe)
|
tested (Thanks to Stefaan Himpe)
|
||||||
|
|
||||||
* Made it easier to add your own control tests by adding a file
|
* Made it easier to add your own control tests by adding a file
|
||||||
extra_tests.py which needs to export a ModifyRegisteredTests() method.
|
extra_tests.py which needs to export a ModifyRegisteredTests() method.
|
||||||
Also cleaned up the code a little.
|
Also cleaned up the code a little.
|
||||||
|
|
||||||
* Updated notepad_fast.py to make it easier to profile (adde a method)
|
* Updated notepad_fast.py to make it easier to profile (adde a method)
|
||||||
|
|
||||||
* Changed WrapHandle to use a cache for classes it has matched - this is
|
* Changed WrapHandle to use a cache for classes it has matched - this is
|
||||||
to avoid having to match against all classes constantly.
|
to avoid having to match against all classes constantly.
|
||||||
|
|
||||||
* Changed default timeout in SendMessageTimeout to .001 seconds from .4
|
* Changed default timeout in SendMessageTimeout to .001 seconds from .4
|
||||||
seconds this results in a significant speedup. Will need to make this
|
seconds this results in a significant speedup. Will need to make this
|
||||||
value modifiable via the timing module/routine.
|
value modifiable via the timing module/routine.
|
||||||
|
|
||||||
* WaitNot was raising an error if the control was not found - it should
|
* WaitNot was raising an error if the control was not found - it should
|
||||||
have returned (i.e. success - control is not in any particular state
|
have returned (i.e. success - control is not in any particular state
|
||||||
because it does not exist!).
|
because it does not exist!).
|
||||||
|
|
||||||
* Added ListViewWrapper.Deselect() per Chistophe Keller's suggestion.
|
* Added ListViewWrapper.Deselect() per Chistophe Keller's suggestion.
|
||||||
While I was at it I added a check on the item value passed in and added
|
While I was at it I added a check on the item value passed in and added
|
||||||
a call to WaitGuiIdle(self) so that the control has a chance to process
|
a call to WaitGuiIdle(self) so that the control has a chance to process
|
||||||
the message.
|
the message.
|
||||||
@ -354,8 +401,8 @@ Change Log
|
|||||||
|
|
||||||
examples\notepad_fast.py language
|
examples\notepad_fast.py language
|
||||||
|
|
||||||
This will load the application data from the supplied file
|
This will load the application data from the supplied file
|
||||||
notepad_fast.pkl and use it for finding the right menu items and
|
notepad_fast.pkl and use it for finding the right menu items and
|
||||||
controls to select.
|
controls to select.
|
||||||
|
|
||||||
* Test implementation to make it easier to start using an application.
|
* Test implementation to make it easier to start using an application.
|
||||||
@ -365,7 +412,7 @@ Change Log
|
|||||||
app.Find.Close.Click()
|
app.Find.Close.Click()
|
||||||
app.NotePad.MenuSelect("File->Exit")
|
app.NotePad.MenuSelect("File->Exit")
|
||||||
|
|
||||||
1st change was to implement static methods ``start()`` and
|
1st change was to implement static methods ``start()`` and
|
||||||
``connect()``. These methods return a new Application instance
|
``connect()``. These methods return a new Application instance
|
||||||
so the above code becomes::
|
so the above code becomes::
|
||||||
|
|
||||||
@ -373,10 +420,10 @@ Change Log
|
|||||||
app.Find.Close.Click()
|
app.Find.Close.Click()
|
||||||
app.NotePad.MenuSelect("File->Exit")
|
app.NotePad.MenuSelect("File->Exit")
|
||||||
|
|
||||||
I also wanted to make it easier to start working with a simple
|
I also wanted to make it easier to start working with a simple
|
||||||
application - that may or may not have only one dialog. To make this
|
application - that may or may not have only one dialog. To make this
|
||||||
situation easier I made ``window_()`` not throw if the application has not
|
situation easier I made ``window_()`` not throw if the application has not
|
||||||
been ``start()ed`` or ``connect()ed`` first. This leads to simpler code
|
been ``start()ed`` or ``connect()ed`` first. This leads to simpler code
|
||||||
like::
|
like::
|
||||||
|
|
||||||
app = Application()
|
app = Application()
|
||||||
@ -384,12 +431,12 @@ Change Log
|
|||||||
app.NotePad.MenuSelect("File->Exit")
|
app.NotePad.MenuSelect("File->Exit")
|
||||||
|
|
||||||
What happens here is that when you execute any of Application.window_(),
|
What happens here is that when you execute any of Application.window_(),
|
||||||
Application.__getattr__() or Application.__getitem__() when the
|
Application.__getattr__() or Application.__getitem__() when the
|
||||||
application hasn't been connected or started. It looks for the window
|
application hasn't been connected or started. It looks for the window
|
||||||
that best matches your specification and connects the application to
|
that best matches your specification and connects the application to
|
||||||
that process.
|
that process.
|
||||||
|
|
||||||
This is extra functionality - existing connect_() and
|
This is extra functionality - existing connect_() and
|
||||||
start_() methods still exist
|
start_() methods still exist
|
||||||
|
|
||||||
* Fixed HwndWrapper.SetFocus() so that it would work even if the window
|
* Fixed HwndWrapper.SetFocus() so that it would work even if the window
|
||||||
@ -402,13 +449,13 @@ Change Log
|
|||||||
with these changes pywinauto should run on Python 2.3 (though I haven't
|
with these changes pywinauto should run on Python 2.3 (though I haven't
|
||||||
done extensive testing).
|
done extensive testing).
|
||||||
|
|
||||||
* Commented out controls.common_controls.TabControlWrapper.GetTabState()
|
* Commented out controls.common_controls.TabControlWrapper.GetTabState()
|
||||||
and TabStates() as these did not seem to be returning valid values anyway.
|
and TabStates() as these did not seem to be returning valid values anyway.
|
||||||
|
|
||||||
* Fixed documentation issues were parts of the documentation were not
|
* Fixed documentation issues were parts of the documentation were not
|
||||||
getting generated to the HTML files.
|
getting generated to the HTML files.
|
||||||
|
|
||||||
* Fixed issue where MenuSelect would sometimes not work as expected.
|
* Fixed issue where MenuSelect would sometimes not work as expected.
|
||||||
Some Menu actions require that the window that owns the menu be active.
|
Some Menu actions require that the window that owns the menu be active.
|
||||||
Added a call to SetFocus() before selecting a menu item to ensure that
|
Added a call to SetFocus() before selecting a menu item to ensure that
|
||||||
the window was active.
|
the window was active.
|
||||||
@ -423,25 +470,25 @@ Change Log
|
|||||||
07-Mar-2006
|
07-Mar-2006
|
||||||
|
|
||||||
* Added wrapper classes for Menus and MenuItems this enabled cleaner
|
* Added wrapper classes for Menus and MenuItems this enabled cleaner
|
||||||
interaction with Menu's. It also gives more functionality - you can now
|
interaction with Menu's. It also gives more functionality - you can now
|
||||||
programmatically Click() on menus, and query if a menu item is checked
|
programmatically Click() on menus, and query if a menu item is checked
|
||||||
or not.
|
or not.
|
||||||
|
|
||||||
* Added application.WindowSpecification.Wait() and WaitNot() methods.
|
* Added application.WindowSpecification.Wait() and WaitNot() methods.
|
||||||
These methods allow you to wait for a control to exist, be visible,
|
These methods allow you to wait for a control to exist, be visible,
|
||||||
be enabled, be ready (both enabled and visible!) or to wait for the
|
be enabled, be ready (both enabled and visible!) or to wait for the
|
||||||
control to not be in any of these states. WaitReady(),
|
control to not be in any of these states. WaitReady(),
|
||||||
WaitNotEnabled(), WaitNotVisible() now use these methods. I was able to also
|
WaitNotEnabled(), WaitNotVisible() now use these methods. I was able to also
|
||||||
add the missing methods WaitNotReady(), WaitEnabled(), WaitVisible(),
|
add the missing methods WaitNotReady(), WaitEnabled(), WaitVisible(),
|
||||||
WaitExists(), WaitnotExists(). Please use Wait() and WaitNot() as I have
|
WaitExists(), WaitnotExists(). Please use Wait() and WaitNot() as I have
|
||||||
Deprecated these Wait* methods.
|
Deprecated these Wait* methods.
|
||||||
|
|
||||||
* Slightly modified timeout waits for control resolution so that a timed
|
* Slightly modified timeout waits for control resolution so that a timed
|
||||||
function more accurately follows the timeout value specified.
|
function more accurately follows the timeout value specified.
|
||||||
|
|
||||||
* Added application.Application.start() and connect() static methods. These
|
* Added application.Application.start() and connect() static methods. These
|
||||||
methods are factory methods in that they will return an initialized Application
|
methods are factory methods in that they will return an initialized Application
|
||||||
instance. They work exactly the same as start_() and connect() as they are
|
instance. They work exactly the same as start_() and connect() as they are
|
||||||
implemented in terms of those.
|
implemented in terms of those.
|
||||||
|
|
||||||
from pywinauto.application import Application
|
from pywinauto.application import Application
|
||||||
@ -452,17 +499,17 @@ Change Log
|
|||||||
more robust.
|
more robust.
|
||||||
|
|
||||||
* Added a new Controls Overview document page which lists all the actions on
|
* Added a new Controls Overview document page which lists all the actions on
|
||||||
all controls.
|
all controls.
|
||||||
|
|
||||||
* Added more unit tests now up to 207 from 134 (added 68 tests)
|
* Added more unit tests now up to 207 from 134 (added 68 tests)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
0.2.1 Small Release number - big changes
|
0.2.1 Small Release number - big changes
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
17-Feb-2006
|
17-Feb-2006
|
||||||
|
|
||||||
* Quick release to get many changes out there - but this release has
|
* Quick release to get many changes out there - but this release has
|
||||||
been less tested then I would like for a .3 release.
|
been less tested then I would like for a .3 release.
|
||||||
|
|
||||||
* Allow access to non text controls using the closest Text control.
|
* Allow access to non text controls using the closest Text control.
|
||||||
@ -476,11 +523,11 @@ Change Log
|
|||||||
|
|
||||||
app.Notepad.Edit.RightClick()
|
app.Notepad.Edit.RightClick()
|
||||||
# need to use MenuClick rather then MenuSelect
|
# need to use MenuClick rather then MenuSelect
|
||||||
app.PopupMenu.MenuClick("Select All")
|
app.PopupMenu.MenuClick("Select All")
|
||||||
app.Notepad.Edit.RightClick()
|
app.Notepad.Edit.RightClick()
|
||||||
app.PopupMenu.MenuClick("Copy")
|
app.PopupMenu.MenuClick("Copy")
|
||||||
|
|
||||||
I could think of merging the ``RightClick()`` and ``MenuSelect()`` into one method
|
I could think of merging the ``RightClick()`` and ``MenuSelect()`` into one method
|
||||||
``ContextMenuSelect()`` if that makes sense to most people.
|
``ContextMenuSelect()`` if that makes sense to most people.
|
||||||
|
|
||||||
* Added Support for Up-Down controls
|
* Added Support for Up-Down controls
|
||||||
@ -491,12 +538,12 @@ Change Log
|
|||||||
|
|
||||||
This was primarily implemented due to work I did getting the System Tray.
|
This was primarily implemented due to work I did getting the System Tray.
|
||||||
|
|
||||||
* Renamed ``StatusBarWrapper.PartWidths()`` to ``PartRightEdges()`` as this
|
* Renamed ``StatusBarWrapper.PartWidths()`` to ``PartRightEdges()`` as this
|
||||||
is more correct for what it returns.
|
is more correct for what it returns.
|
||||||
|
|
||||||
* Changed HwndWrapper.Text() and SetText() to WindowText() and
|
* Changed HwndWrapper.Text() and SetText() to WindowText() and
|
||||||
SetWindowText() respectively to try and make it clearer that it is
|
SetWindowText() respectively to try and make it clearer that it is
|
||||||
the text returned by GetWindowText and not the text that is visible
|
the text returned by GetWindowText and not the text that is visible
|
||||||
on the control. This change also suggested that EditWrapper.SetText()
|
on the control. This change also suggested that EditWrapper.SetText()
|
||||||
be changed to SetEditText() (though this is not a hard requirement
|
be changed to SetEditText() (though this is not a hard requirement
|
||||||
EditWrapper.SetText() still exists - but may be deprecated.
|
EditWrapper.SetText() still exists - but may be deprecated.
|
||||||
@ -506,7 +553,7 @@ Change Log
|
|||||||
WM_LBUTTONDOWN, WM_RBUTTONUP, etc used by Click, DoubleClick etc.
|
WM_LBUTTONDOWN, WM_RBUTTONUP, etc used by Click, DoubleClick etc.
|
||||||
|
|
||||||
I also added a MenuClick method that allows you to click on menu
|
I also added a MenuClick method that allows you to click on menu
|
||||||
items. This means you can now 'physically' drop menus down.
|
items. This means you can now 'physically' drop menus down.
|
||||||
|
|
||||||
* Some further working with tooltips that need to be cleaned up.
|
* Some further working with tooltips that need to be cleaned up.
|
||||||
|
|
||||||
@ -519,15 +566,15 @@ Change Log
|
|||||||
app.Notepad.MenuItem("View")
|
app.Notepad.MenuItem("View")
|
||||||
app.Notepad.MenuItem("View->Status Bar")
|
app.Notepad.MenuItem("View->Status Bar")
|
||||||
|
|
||||||
MenuItems have various actions so for example you can use
|
MenuItems have various actions so for example you can use
|
||||||
``MenuItem.IsChecked()`` to check if the menu item is checked.
|
``MenuItem.IsChecked()`` to check if the menu item is checked.
|
||||||
Among other methods there are ``Click()`` and ``Enabled()``.
|
Among other methods there are ``Click()`` and ``Enabled()``.
|
||||||
|
|
||||||
* Modified the 'best match' algorithm for finding controls.
|
* Modified the 'best match' algorithm for finding controls.
|
||||||
It now searches a couple of times, and tries to find the best
|
It now searches a couple of times, and tries to find the best
|
||||||
fit for the text passed to it. The idea here is to make it more
|
fit for the text passed to it. The idea here is to make it more
|
||||||
"Select what I want - not that other thing that looks a bit like
|
"Select what I want - not that other thing that looks a bit like
|
||||||
what I want!". It is possible this change could mean you need to
|
what I want!". It is possible this change could mean you need to
|
||||||
use new identifiers in scripts - but in general very little modification
|
use new identifiers in scripts - but in general very little modification
|
||||||
should be necessary.
|
should be necessary.
|
||||||
|
|
||||||
@ -536,7 +583,7 @@ Change Log
|
|||||||
implementation. It also had a bug for controls above the control
|
implementation. It also had a bug for controls above the control
|
||||||
rather than to the left.
|
rather than to the left.
|
||||||
|
|
||||||
* Added a new example scripts SaveFromInternetExplorer.py and
|
* Added a new example scripts SaveFromInternetExplorer.py and
|
||||||
SaveFromFirefox.py which show automating downloading of a page
|
SaveFromFirefox.py which show automating downloading of a page
|
||||||
from either of these browsers.
|
from either of these browsers.
|
||||||
|
|
||||||
@ -550,25 +597,25 @@ Change Log
|
|||||||
* Changed how windows are searched for (from application)
|
* Changed how windows are searched for (from application)
|
||||||
This chage should not be a significant change for users
|
This chage should not be a significant change for users
|
||||||
|
|
||||||
* Started adding unit tests (and the have already uncovered bugs
|
* Started adding unit tests (and the have already uncovered bugs
|
||||||
that been fixed). They also point to areas of missing functionality
|
that been fixed). They also point to areas of missing functionality
|
||||||
that will be addded with future updates
|
that will be addded with future updates
|
||||||
|
|
||||||
* Changed from property access to Control attributes to function access
|
* Changed from property access to Control attributes to function access
|
||||||
If your code was accessing properties of controls then this might be a
|
If your code was accessing properties of controls then this might be a
|
||||||
significant change! The main reasons for doing this were due to the
|
significant change! The main reasons for doing this were due to the
|
||||||
inheritability of properties (or lack there-of!) and the additional
|
inheritability of properties (or lack there-of!) and the additional
|
||||||
scafolding that was required to define them all.
|
scafolding that was required to define them all.
|
||||||
|
|
||||||
* Updated the ``DialogWrapper.MenuSelect()`` method to notify the parent
|
* Updated the ``DialogWrapper.MenuSelect()`` method to notify the parent
|
||||||
that it needs to initialize the menu's before it retrieves the items
|
that it needs to initialize the menu's before it retrieves the items
|
||||||
|
|
||||||
* Added functionality to associate 'non-text' controls with the 'text'
|
* Added functionality to associate 'non-text' controls with the 'text'
|
||||||
control closest to them. This allows controls to be referenced by::
|
control closest to them. This allows controls to be referenced by::
|
||||||
|
|
||||||
app.dlg.<Nearby_text><Window_class>
|
app.dlg.<Nearby_text><Window_class>
|
||||||
|
|
||||||
e.g. to reference the "Footer" edit control in the Page Setup dialog
|
e.g. to reference the "Footer" edit control in the Page Setup dialog
|
||||||
you could use::
|
you could use::
|
||||||
|
|
||||||
app.PageSetup.FooterEdit
|
app.PageSetup.FooterEdit
|
||||||
@ -578,8 +625,8 @@ Change Log
|
|||||||
* Did some more cleanup (fixing pylint warnings) but still not finished
|
* Did some more cleanup (fixing pylint warnings) but still not finished
|
||||||
|
|
||||||
* Added some better support for .NET controls (not to be considered final)
|
* Added some better support for .NET controls (not to be considered final)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
0.1.3 Many changes, few visible
|
0.1.3 Many changes, few visible
|
||||||
@ -590,11 +637,11 @@ Change Log
|
|||||||
* Ran pychecker and pylint and fixed some errors/warning
|
* Ran pychecker and pylint and fixed some errors/warning
|
||||||
* changed ::
|
* changed ::
|
||||||
|
|
||||||
_connect, _start, _window, _control, _write
|
_connect, _start, _window, _control, _write
|
||||||
|
|
||||||
respectively to ::
|
respectively to ::
|
||||||
|
|
||||||
connect_, start_, window_, connect_, write_
|
connect_, start_, window_, connect_, write_
|
||||||
|
|
||||||
If you forget to change ``_window``, ``_connect`` and ``_start`` then you will probably get the following error. ::
|
If you forget to change ``_window``, ``_connect`` and ``_start`` then you will probably get the following error. ::
|
||||||
|
|
||||||
@ -608,8 +655,8 @@ Change Log
|
|||||||
* Refactored some of the methods in common_controls
|
* Refactored some of the methods in common_controls
|
||||||
* Refactored how FriendlyClassName is discovered (and still not really happy!
|
* Refactored how FriendlyClassName is discovered (and still not really happy!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
0.1.2 Add Readme and rollup various changes
|
0.1.2 Add Readme and rollup various changes
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
15-Jan-2006
|
15-Jan-2006
|
||||||
@ -625,7 +672,7 @@ Change Log
|
|||||||
* Added section to save the document as UTF-8 in MinimalNotepadTest
|
* Added section to save the document as UTF-8 in MinimalNotepadTest
|
||||||
* Fixed EscapeSpecials and UnEscapeSpecials in XMLHelpers
|
* Fixed EscapeSpecials and UnEscapeSpecials in XMLHelpers
|
||||||
* Made sure that overly large bitmaps do not break XML writing
|
* Made sure that overly large bitmaps do not break XML writing
|
||||||
|
|
||||||
|
|
||||||
0.1.1 Minor bug fix release
|
0.1.1 Minor bug fix release
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user