FAQ
ANN: pywinauto 0.3.0 released - now localization proof

Hi,

The 0.3.0 release of pywinauto is now available.

pywinauto is a set of open-source (LGPL) modules for using Python as a
GUI automation 'driver' for Windows NT based Operating Systems
(NT/W2K/XP).

SourceForge project page:
http://sourceforge.net/projects/pywinauto

Download from SourceForge
http://sourceforge.net/project/showfiles.php?group_id7379


Here is the list of changes from 0.2.5:

0.3.0 Added Application data - now useful for localization testing
------------------------------------------------------------------
20-Mar-2006

* Added automatic Application data collection which can be used
when running the same test on a different spoken language
version. Support is still preliminary and is expected to change.
Please treat as early Alpha.

If you have a different language version of Windows then you can
try this out by running the notepad_fast.py example with the
langauge argument e.g. ::

examples\notepad_fast.py language

This will load the application data from the supplied file
notepad_fast.pkl and use it for finding the right menu items
and controls to select.

* Test implementation to make it easier to start using an
application. Previously you needed to write code like ::

app = Application().connect_(title = 'Find')
app.Find.Close.Click()
app.NotePad.MenuSelect("File->Exit")

1st change was to implement static methods ``start()`` and
``connect()``. These methods return a new Application instance
so the above code becomes::

app = Application.connect(title = 'Find')
app.Find.Close.Click()
app.NotePad.MenuSelect("File->Exit")

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 situation easier I made ``window_()`` not throw if the
application has not been ``start()ed`` or ``connect()ed`` first.
This leads to simpler code like::

app = Application()
app.Find.Close.Click()
app.NotePad.MenuSelect("File->Exit")

What happens here is that when you execute any of
Application.window_(), Application.__getattr__() or
Application.__getitem__() when the application hasn't been connected
or started. It looks for the window that best matches your
specification and connects the application to that process.

This is extra functionality - existing connect_() and
start_() methods still exist

* Fixed HwndWrapper.SetFocus() so that it would work even if
the window was not in the foreground. (it now makes the window
foreground as well as giving it focus). This overcomes a
restriction in Windows where you can only change the foreground
window if you own the foreground window.

* Changed some 2.4'isms that an anonymous commenter left on my
blog :-) with these changes pywinauto should run on Python 2.3
(though I haven't done extensive testing).

* Commented out
controls.common_controls.TabControlWrapper.GetTabState()
and TabStates() as these did not seem to be returning valid
values anyway.

* Fixed documentation issues were parts of the documentation were
not getting generated to the HTML files.

* Fixed issue where MenuSelect would sometimes not work as
expected. 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 the window was active.

* Fixed Bug 1452832 where clipboard was not closed in
clipboard.GetData()

* Added more unit tests now up to 248 from 207


If you want to follow this project then please sign up to the mailing
list:
https://lists.sourceforge.net/mailman/listinfo/pywinauto-users

Thanks
Mark

Search Discussions

  • Bryan at Mar 21, 2006 at 2:53 pm

    mark.m.mcmahon at gmail.com wrote:
    ANN: pywinauto 0.3.0 released - now localization proof

    Hi,

    The 0.3.0 release of pywinauto is now available.

    pywinauto is a set of open-source (LGPL) modules for using Python as a
    GUI automation 'driver' for Windows NT based Operating Systems
    (NT/W2K/XP).

    SourceForge project page:
    http://sourceforge.net/projects/pywinauto

    Download from SourceForge
    http://sourceforge.net/project/showfiles.php?group_id7379


    Here is the list of changes from 0.2.5:

    0.3.0 Added Application data - now useful for localization testing
    ------------------------------------------------------------------
    20-Mar-2006

    * Added automatic Application data collection which can be used
    when running the same test on a different spoken language
    version. Support is still preliminary and is expected to change.
    Please treat as early Alpha.

    If you have a different language version of Windows then you can
    try this out by running the notepad_fast.py example with the
    langauge argument e.g. ::

    examples\notepad_fast.py language

    This will load the application data from the supplied file
    notepad_fast.pkl and use it for finding the right menu items
    and controls to select.

    * Test implementation to make it easier to start using an
    application. Previously you needed to write code like ::

    app = Application().connect_(title = 'Find')
    app.Find.Close.Click()
    app.NotePad.MenuSelect("File->Exit")

    1st change was to implement static methods ``start()`` and
    ``connect()``. These methods return a new Application instance
    so the above code becomes::

    app = Application.connect(title = 'Find')
    app.Find.Close.Click()
    app.NotePad.MenuSelect("File->Exit")

    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 situation easier I made ``window_()`` not throw if the
    application has not been ``start()ed`` or ``connect()ed`` first.
    This leads to simpler code like::

    app = Application()
    app.Find.Close.Click()
    app.NotePad.MenuSelect("File->Exit")

    What happens here is that when you execute any of
    Application.window_(), Application.__getattr__() or
    Application.__getitem__() when the application hasn't been connected
    or started. It looks for the window that best matches your
    specification and connects the application to that process.

    This is extra functionality - existing connect_() and
    start_() methods still exist

    * Fixed HwndWrapper.SetFocus() so that it would work even if
    the window was not in the foreground. (it now makes the window
    foreground as well as giving it focus). This overcomes a
    restriction in Windows where you can only change the foreground
    window if you own the foreground window.

    * Changed some 2.4'isms that an anonymous commenter left on my
    blog :-) with these changes pywinauto should run on Python 2.3
    (though I haven't done extensive testing).

    * Commented out
    controls.common_controls.TabControlWrapper.GetTabState()
    and TabStates() as these did not seem to be returning valid
    values anyway.

    * Fixed documentation issues were parts of the documentation were
    not getting generated to the HTML files.

    * Fixed issue where MenuSelect would sometimes not work as
    expected. 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 the window was active.

    * Fixed Bug 1452832 where clipboard was not closed in
    clipboard.GetData()

    * Added more unit tests now up to 248 from 207


    If you want to follow this project then please sign up to the mailing
    list:
    https://lists.sourceforge.net/mailman/listinfo/pywinauto-users

    Thanks
    Mark

    i just tried the notepad demo and it's very nice. the only thing was in the
    demo it shows one Click() method to close the notepadabout dialog. but for me on
    windows xp media edition, it took two Click() methods. the first click clearly
    had the button depressed and the second click released the button back up. is
    this a bug in 0.3.0? or is it the new way of doing it... two clicks for each
    button?

    also, i would be really nice if the FAQ mentioned where you could get free or
    opensourced spy utilities so you could spy on controls and get their id values
    or internal names.

    thanks,

    bryan
  • Mark M Mcmahon at Mar 21, 2006 at 8:24 pm
    <replied offline already>
    Hi Bryan,
    On 3/21/06, Bryan wrote:
    mark.m.mcmahon at gmail.com wrote:
    ANN: pywinauto 0.3.0 released - now localization proof
    i just tried the notepad demo and it's very nice. the only thing was in the
    demo it shows one Click() method to close the notepadabout dialog. but for me on
    windows xp media edition, it took two Click() methods. the first click clearly
    had the button depressed and the second click released the button back up. is
    this a bug in 0.3.0? or is it the new way of doing it... two clicks for each
    button?
    The notepad demo in the project (examples\notepad*.py) do not touch
    the about dialog - so I guess you are looking at the demo on
    pywinauto.pbwiki.org.

    Only one click should be necessary - for closing dialogs it is a
    little safer to use CloseClick() (just because it can take a little
    bit of time to close some dialogs - and this methods just waits a
    little longer after clicking).

    I assume you are using pywinauto from the interactive prompt? The
    problem is that it seems notepad doesn't seem to accept the click when
    it doesn't have focus. But if you are running this in a script then it
    WILL have focus and the Click() will work. (I tried :-) )
    also, i would be really nice if the FAQ mentioned where you could get free or
    opensourced spy utilities so you could spy on controls and get their id values
    or internal names.
    Will do :-) do a google for Winspector - which I use all the time.
    (http://www.windows-spy.com/)
    thanks,

    bryan
    Thank you!
    Mark
  • Mark M Mcmahon at Mar 21, 2006 at 8:24 pm
    <replied offline already>
    Hi Bryan,
    On 3/21/06, Bryan wrote:
    mark.m.mcmahon at gmail.com wrote:
    ANN: pywinauto 0.3.0 released - now localization proof
    i just tried the notepad demo and it's very nice. the only thing was in the
    demo it shows one Click() method to close the notepadabout dialog. but for me on
    windows xp media edition, it took two Click() methods. the first click clearly
    had the button depressed and the second click released the button back up. is
    this a bug in 0.3.0? or is it the new way of doing it... two clicks for each
    button?
    The notepad demo in the project (examples\notepad*.py) do not touch
    the about dialog - so I guess you are looking at the demo on
    pywinauto.pbwiki.org.

    Only one click should be necessary - for closing dialogs it is a
    little safer to use CloseClick() (just because it can take a little
    bit of time to close some dialogs - and this methods just waits a
    little longer after clicking).

    I assume you are using pywinauto from the interactive prompt? The
    problem is that it seems notepad doesn't seem to accept the click when
    it doesn't have focus. But if you are running this in a script then it
    WILL have focus and the Click() will work. (I tried :-) )
    also, i would be really nice if the FAQ mentioned where you could get free or
    opensourced spy utilities so you could spy on controls and get their id values
    or internal names.
    Will do :-) do a google for Winspector - which I use all the time.
    (http://www.windows-spy.com/)
    thanks,

    bryan
    Thank you!
    Mark

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppython-list @
categoriespython
postedMar 20, '06 at 9:12p
activeMar 21, '06 at 8:24p
posts4
users2
websitepython.org

2 users in discussion

Mark M Mcmahon: 3 posts Bryan: 1 post

People

Translate

site design / logo © 2022 Grokbase