Coder Social home page Coder Social logo

pyatom's Introduction

ATOMac - Automated Testing on Mac

Introduction

We are pleased to introduce the first Python library to fully enable GUI testing of Mac applications via the Apple Accessibility API. This library was created out of desperation. Existing tools such as using appscript to send messages to accessibility objects are painful to write and slow to use. ATOMac has direct access to the API. It's fast and easy to use to write tests.

Getting started

ATOMac requires a system running OS X and Xcode installed. It has been tested extensively on 10.6, 10.7, and 10.8. 10.5 may work. If you experience issues with ATOMac on a particular version of OS X, please open a ticket in the issue tracker.

Systemwide accessibility must be enabled. Check the checkbox: System Preferences > Universal Access > Enable access for assistive devices. Failure to enable this will result in ErrorAPIDisabled exceptions during some module usage.

Installation should be as simple as running the following command line, which will download, build and install ATOMac:

$ sudo easy_install atomac

Usage

Once the atomac module is installed, you should be able to use it to launch an application:

>>> import atomac
>>> atomac.launchAppByBundleId('com.apple.Automator')

This should launch Automator. Next, get a reference to the UI Element for the application itself:

>>> automator = atomac.getAppRefByBundleId('com.apple.Automator')
>>> automator
<pyatom.AXClasses.NativeUIElement AXApplication u'Automator'>

Now, we can find objects in the accessibility hierarchy:

>>> window = automator.windows()[0]
>>> window.AXTitle
u'Untitled'
>>> sheet = window.sheets()[0]

Note that we retrieved an accessibility attribute from the Window object - AXTitle. ATOMac supports reading and writing of most attributes. Using Xcode's included accessibility inspector can provide a quick way to find these attributes.

There is a shortcut for getting the sheet object which bypasses accessing it through the Window object - ATOMac can search all objects in the hierarchy:

>>> sheet = automator.sheetsR()[0]

There are search methods for most types of accessibility objects. Each search method, such as windows, has a corresponding recursive search function, such as windowsR. The recursive search finds items that aren't just direct children, but children of children. These search methods can be given terms to identify specific elements. Note that * and ? can be used as wildcard match characters in all ATOMac search methods:

>>> close = sheet.buttons('Close')[0]

ATOMac has a method to search for UI Elements that match any number of criteria. The criteria are accessibility attributes:

>>> close = sheet.findFirst(AXRole='AXButton', AXTitle='Close')

FindFirst and FindFirstR return the first item found to match the criteria or None. FindAll and FindAllR return a list of all items that match the criteria or an empty list.

Objects are fairly versatile. You can get a list of supported attributes and actions on an object:

>>> close.getAttributes()
[u'AXRole', u'AXRoleDescription', u'AXHelp', u'AXEnabled', u'AXFocused',
u'AXParent', u'AXWindow', u'AXTopLevelUIElement', u'AXPosition', u'AXSize',
u'AXTitle']
>>> close.AXTitle
u'Close'
>>> close.getActions()
[u'Press']

Performing an action is as natural as:

>>> close.Press()

Any action can be triggered this way.

LDTP

Starting with version 1.0.0, ATOMac now includes compatibility with LDTP, a cross platform automation library. This allows testers to write a single script that will automate test cases on Linux, Windows, and now Mac OS X. Information and documentation on LDTP can be found at the LDTP home page.

LDTP operation is virtually identical to the operation on Linux. The import mechanism is slightly different, since it is shipped with ATOMac. Cross platform scripts executing on the System Under Test should import the LDTP client as follows:

try:
    import ldtp
except ImportError:
    import atomac.ldtp as ldtp

In the future, the LDTP client may be broken out into a separate platform independent module to ameliorate this issue.

Like the Linux platform, the LDTP daemon may be run on the SUT, enabling client/server testing by executing 'ldtp' at a shell prompt. See the LDTP documentation for more details on client/server operation.

Todo and contributing

Although ATOMac is fully functional and drives hundreds of automated test cases at VMware, we have a to-do list to make the project even better.

  • Formatting - this code is not currently PEP-8 compliant.
  • Better mouse handling - for example, a method to smoothly drag from one UI Element to another.
  • Cleanup the search methods - We could use currying to define all the search methods in AXClasses in a cleaner way.

Feel free to submit pull requests against the project on Github. If you're interested in developing ATOMac itself, sign up to the pyatom-dev mailing list.

See also

License

ATOMac is released under the GNU General Public License. See COPYING.txt for more details.

Authors

James Tatum <[email protected]>, Andrew Wu, Jesse Mendonca, Ken Song, Nagappan Alagappan, Yingjun Li,

And other contributors listed in the CHANGELOG file. Thank you so much!

pyatom's People

Contributors

abmish avatar andrusha avatar bzzzzzz avatar daveenguyen avatar djromero avatar harry5263 avatar jonathonw avatar jtatum avatar kensong avatar ladza avatar meduzaza avatar mpichlin avatar mzxu avatar nagappan avatar pehcha avatar pekkle01 avatar ppluciennik avatar yingjunli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pyatom's Issues

AXValueIndicator.AXValue bugs

a=pyatom.getAppRefByLocalizedName('iTunes')
w=a.windowsR('Playback')[0] # Preferences -> Playback
v=w.findFirstR(AXRole='AXValueIndicator')
v.AXValue
SystemError: error return without exception set
v.AXValue=0.5
pyatom._a11y.ErrorUnsupported: Setting this attribute is not supported yet.

The system error should be corrected - we're returning NULL without setting an exception. But also we need to support reading and writing CF floats.

object_handle.AXVisibleCells throws exception

Accessing table's visible cells throws following exception:

Traceback (most recent call last):
File "core.py", line 333, in
print test.selectrow("Accounts", "tbl0", "VMware")
File "/Users/nags/work/pyatom/atomac/ldtpd/table.py", line 67, in selectrow
print object_handle.AXVisibleCells
File "build/bdist.macosx-10.7-intel/egg/atomac/AXClasses.py", line 663, in getattr
atomac._a11y.ErrorUnsupported: Error retrieving attribute (AXError -25205)

While implementing this, please check, whether the following scenario also works:

    for cell in object_handle.AXVisibleCells:
        print cell, cell.AXSelected, dir(cell.AXSelected)

Maybe I should file a diff bug if AXVisibleCells is implemented.

Thanks

Segmentation fault (SEGV) when using `waitFor...` methods

Summary

If I execute the following script, go to OS X Finder and open a new window, the Python interpreter gets a segfault. This happens for all waitFor... methods when waiting for anything.

import atomac as AM
import atomac.AXKeyCodeConstants as AMK

finder = AM.getAppRefByBundleId('com.apple.finder')
print "Found: %s" % finder
new_creation = finder.waitForCreation()
if new_creation:
    print "Newly created: %s" % new_creation
else:
    print "Nothing got created..."

EDIT: This problem only happens with the atomac package in the virtualenv. If I use Apple's Python (v2.7.2 in /usr/bin/python) and install atomac using sudo easy_install atomac, my example works.

Traces

Executing the script without opening a new Finder window

$ python atomac-crash.py 
Found: <atomac.AXClasses.NativeUIElement AXApplication u'Finder'>
Nothing got created...

Executing the script while opening a new Finder window

$ python atomac-crash.py 
Found: <atomac.AXClasses.NativeUIElement AXApplication u'Finder'>
Segmentation fault: 11

Version information:

OS X:

System Software Overview:

  System Version: OS X 10.8.5 (12F20)
  Kernel Version: Darwin 12.5.0
  Boot Volume: Macintosh HD
  Boot Mode: Normal
  Computer Name: [...]
  User Name: [...]
  Secure Virtual Memory: Enabled
  Time since boot: 1:30

Python

Python 2.7.4 (default, Aug 20 2013, 16:05:58) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin

Atomac (installed via virtualenv):

atomac-1.1.0-py2.7

Crash report:

Process:         python [6932]
Path:            /Users/USER/*/python
Identifier:      python
Version:         0
Code Type:       X86-64 (Native)
Parent Process:  bash [5159]
User ID:         501

Date/Time:       2013-08-21 11:48:22.955 +0100
OS Version:      Mac OS X 10.8.5 (12F20)
Report Version:  10

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000098

VM Regions Near 0x98:
--> 
    __TEXT                 0000000109e6f000-0000000109e70000 [    4K] r-x/rwx SM=COW  /Users/USER/*

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   org.python.python               0x0000000109ebe08c tupledealloc + 34
1   _a11y.so                        0x000000010a15d415 observerCallback + 613
2   com.apple.HIServices            0x00007fff8fe24ef9 _XXMIGPostNotification + 952
3   com.apple.HIServices            0x00007fff8fe2dbd2 _XPostNotification + 408
4   com.apple.HIServices            0x00007fff8fe0af4e mshMIGPerform + 443
5   com.apple.CoreFoundation        0x00007fff96c4dd09 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41
6   com.apple.CoreFoundation        0x00007fff96c4da49 __CFRunLoopDoSource1 + 153
7   com.apple.CoreFoundation        0x00007fff96c80c02 __CFRunLoopRun + 1826
8   com.apple.CoreFoundation        0x00007fff96c800e2 CFRunLoopRunSpecific + 290
9   _a11y.so                        0x000000010a15dd5b AXUIElement_setNotification + 779
10  org.python.python               0x0000000109ef681c PyEval_EvalFrameEx + 7873
11  org.python.python               0x0000000109ef4831 PyEval_EvalCodeEx + 1638
12  org.python.python               0x0000000109e9bd94 function_call + 336
13  org.python.python               0x0000000109e7e5fd PyObject_Call + 101
14  org.python.python               0x0000000109ef8563 PyEval_EvalFrameEx + 15368
15  org.python.python               0x0000000109ef4831 PyEval_EvalCodeEx + 1638
16  org.python.python               0x0000000109efac23 fast_function + 282
17  org.python.python               0x0000000109ef7a29 PyEval_EvalFrameEx + 12494
18  org.python.python               0x0000000109ef4831 PyEval_EvalCodeEx + 1638
19  org.python.python               0x0000000109efac23 fast_function + 282
20  org.python.python               0x0000000109ef7a29 PyEval_EvalFrameEx + 12494
21  org.python.python               0x0000000109ef4831 PyEval_EvalCodeEx + 1638
22  org.python.python               0x0000000109ef41c5 PyEval_EvalCode + 54
23  org.python.python               0x0000000109f12f98 run_mod + 53
24  org.python.python               0x0000000109f1303f PyRun_FileExFlags + 137
25  org.python.python               0x0000000109f12b8d PyRun_SimpleFileExFlags + 718
26  org.python.python               0x0000000109f235e7 Py_Main + 3039
27  libdyld.dylib                   0x00007fff936887e1 start + 1

Thread 1:: Dispatch queue: com.apple.libdispatch-manager
0   libsystem_kernel.dylib          0x00007fff9603fd16 kevent + 10
1   libdispatch.dylib               0x00007fff9202edea _dispatch_mgr_invoke + 883
2   libdispatch.dylib               0x00007fff9202e9ee _dispatch_mgr_thread + 54

Thread 2:
0   libsystem_kernel.dylib          0x00007fff9603f6d6 __workq_kernreturn + 10
1   libsystem_c.dylib               0x00007fff97e6cf1c _pthread_workq_return + 25
2   libsystem_c.dylib               0x00007fff97e6cce3 _pthread_wqthread + 412
3   libsystem_c.dylib               0x00007fff97e57191 start_wqthread + 13

Thread 3:
0   libsystem_kernel.dylib          0x00007fff9603f6d6 __workq_kernreturn + 10
1   libsystem_c.dylib               0x00007fff97e6cf1c _pthread_workq_return + 25
2   libsystem_c.dylib               0x00007fff97e6cce3 _pthread_wqthread + 412
3   libsystem_c.dylib               0x00007fff97e57191 start_wqthread + 13

Thread 4:
0   libsystem_kernel.dylib          0x00007fff9603f6d6 __workq_kernreturn + 10
1   libsystem_c.dylib               0x00007fff97e6cf1c _pthread_workq_return + 25
2   libsystem_c.dylib               0x00007fff97e6cce3 _pthread_wqthread + 412
3   libsystem_c.dylib               0x00007fff97e57191 start_wqthread + 13

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000109fb8e70  rbx: 0x000000010bcdce88  rcx: 0x000000010bcdce68  rdx: 0x00007ff5b8489520
  rdi: 0x000000010a113350  rsi: 0x0000000100000000  rbp: 0x00007fff55d8eba0  rsp: 0x00007fff55d8eb80
   r8: 0x0000000000002060   r9: 0x00007fff55d8eb40  r10: 0x0000000000000002  r11: 0x00007ff5bb59b248
  r12: 0x000000010a113350  r13: 0x0000000000000000  r14: 0x0000000000000000  r15: 0x0000000000000001
  rip: 0x0000000109ebe08c  rfl: 0x0000000000010297  cr2: 0x0000000000000098
Logical CPU: 0

Binary Images:
       0x109e6f000 -        0x109e6ffff +python (0) <F59EB1C4-E3A4-3B10-B2A3-7C6F78FC5DD9> /Users/USER/*/python
       0x109e75000 -        0x109f7eff7 +org.python.python (2.7.4, [c] 2004-2013 Python Software Foundation. - 2.7.4) <3D7FA99F-C4F6-314A-88B5-8200E800ECD7> /usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/Python
       0x10a15c000 -        0x10a15fff7 +_a11y.so (0) <A558CBC9-CD93-3F91-85FD-910696663378> /Users/USER/*/_a11y.so
       0x10a1c5000 -        0x10a20dff7 +_objc.so (0) <46417CBA-123B-3E44-BF6D-405548E1ADEC> /Users/USER/*/_objc.so
       0x10a495000 -        0x10a498fff +_collections.so (0) <D40800C5-1C4A-371A-8C31-A0D787D21AA0> /Users/USER/*/_collections.so
       0x10a49d000 -        0x10a4a0fff +operator.so (0) <C51F56D2-A236-3371-9A26-F838D2B599FB> /Users/USER/*/operator.so
       0x10a4a6000 -        0x10a4abfff +itertools.so (0) <D690304D-C5A4-31F7-8405-75DCD9DFE13C> /Users/USER/*/itertools.so
       0x10a4b4000 -        0x10a4b5fff +_heapq.so (0) <52DFADBF-35A5-382C-A3A4-5A045689FA31> /Users/USER/*/_heapq.so
       0x10a575000 -        0x10a586fff +_ctypes.so (0) <7B6B9272-4F5B-3983-98EA-40482B7F117C> /Users/USER/*/_ctypes.so
       0x10a591000 -        0x10a594fff +_struct.so (0) <A440C3E7-45FA-3649-BB57-8E2B80E9DB81> /Users/USER/*/_struct.so
       0x10a59a000 -        0x10a59bfff +_functools.so (0) <C805AE1A-495B-3D2B-AEA2-78190E62A617> /Users/USER/*/_functools.so
       0x10a5de000 -        0x10a5dfff7 +time.so (0) <8C7DF3A0-C008-3F85-B59E-90AB1FABC09F> /Users/USER/*/time.so
       0x10a6a5000 -        0x10a6a5fff +grp.so (0) <9BEA15CC-82B2-3795-8499-72E729CB9FCC> /Users/USER/*/grp.so
       0x10a6a8000 -        0x10a6aafff +binascii.so (0) <85E176EE-42D8-3361-AF48-3077F294BA1E> /Users/USER/*/binascii.so
       0x10a6ad000 -        0x10a6aefff +cStringIO.so (0) <449CA1D0-1F4B-3397-B243-D5AEE365B619> /Users/USER/*/cStringIO.so
       0x10a6b3000 -        0x10a6c4fff +_io.so (0) <2763AFF2-0EA3-37FF-9FE1-2BB951510A13> /Users/USER/*/_io.so
       0x10a715000 -        0x10a718fff +strop.so (0) <A35E6271-4F22-36DC-AD2E-0BBD90C93857> /Users/USER/*/strop.so
       0x10a71c000 -        0x10a71efff +zlib.so (0) <963EFA22-05BE-3ADF-BE24-73BD1D9CE13E> /Users/USER/*/zlib.so
       0x10a722000 -        0x10a72afff +parser.so (0) <D32D46BA-ACDA-39DA-87C8-D443645932D5> /Users/USER/*/parser.so
       0x10a76e000 -        0x10a779ff7 +datetime.so (0) <17A78E68-CBFB-3666-A8E4-CE31A30B0FAC> /Users/USER/*/datetime.so
       0x10a782000 -        0x10a7a3ff7 +pyexpat.so (0) <EE17D9C5-A92B-3856-97E6-5CA6F5D77D6B> /Users/USER/*/pyexpat.so
       0x10a86e000 -        0x10a86ffff +_inlines.so (0) <28E95F3B-81D1-3BBF-8CAC-4D6074D0BCAA> /Users/USER/*/_inlines.so
       0x10badb000 -        0x10bae3ff7 +_CoreFoundation.so (0) <BB84F7A5-6A2C-36FF-93AF-54A320F7E813> /Users/USER/*/_CoreFoundation.so
       0x10bb2b000 -        0x10bb2cfff +_inlines.so (0) <689FE3B7-3146-32EC-84A1-84CB4A4B031A> /Users/USER/*/_inlines.so
       0x10bb31000 -        0x10bb3dfff +_Foundation.so (0) <1E46FEF5-83D1-3E9D-9E6E-BBE49A531EB4> /Users/USER/*/_Foundation.so
       0x10bc37000 -        0x10bc37fff +_inlines.so (0) <8FC9D20A-00A2-3C30-9C3A-17BA45EA186E> /Users/USER/*/_inlines.so
       0x10bc3a000 -        0x10bc48ff7 +_AppKit.so (0) <D7AD9A2C-7B6D-3D1E-B49C-FC1D5112D036> /Users/USER/*/_AppKit.so
       0x10bc93000 -        0x10bc93fff +_inlines.so (0) <DA5764D7-CA25-3DD6-BA2A-BDCB235F3DA5> /Users/USER/*/_inlines.so
       0x10bc96000 -        0x10bc9aff7 +_callbacks.so (0) <B6C0F584-93AE-3302-9FF4-1405393EB8F6> /Users/USER/*/_callbacks.so
       0x10bca0000 -        0x10bca1fff +_doubleindirect.so (0) <2C474D33-D5CF-3657-A323-90C6E31CD7F7> /Users/USER/*/_doubleindirect.so
       0x10bca4000 -        0x10bca5ff7 +_sortandmap.so (0) <FD963649-8F90-3DE8-8F8B-4E2ADA67CA54> /Users/USER/*/_sortandmap.so
       0x10bca8000 -        0x10bca9fff +_coregraphics.so (0) <DD65199D-24BA-305F-A3A0-A8D2EE4FB410> /Users/USER/*/_coregraphics.so
       0x10bcad000 -        0x10bcadfff +_CVPixelBuffer.so (0) <34829A42-4AFD-3BFA-A963-6EB0629C5E0D> /Users/USER/*/_CVPixelBuffer.so
    0x7fff69a6f000 -     0x7fff69aa393f  dyld (210.2.3) <36CAA36E-72BC-3E48-96D9-B96A2DF77730> /usr/lib/dyld
    0x7fff8c027000 -     0x7fff8c073ff7  libauto.dylib (185.4) <AD5A4CE7-CB53-313C-9FAE-673303CC2D35> /usr/lib/libauto.dylib
    0x7fff8c074000 -     0x7fff8c10ffff  com.apple.CoreSymbolication (3.0 - 117) <7D43ED93-BD81-338C-8076-6A932A1D19E8> /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
    0x7fff8c1ce000 -     0x7fff8c20dff7  com.apple.QD (3.42.1 - 285.1) <77A20C25-EBB5-341C-A05C-5D458B97AD5C> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
    0x7fff8c213000 -     0x7fff8c241fff  com.apple.CoreServicesInternal (154.3 - 154.3) <F4E118E4-E327-3314-83D7-EA20B1717ED0> /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
    0x7fff8c247000 -     0x7fff8c272fff  libxslt.1.dylib (11.3) <441776B8-9130-3893-956F-39C85FFA644F> /usr/lib/libxslt.1.dylib
    0x7fff8c273000 -     0x7fff8c2c2fff  com.apple.framework.CoreWiFi (1.3 - 130.13) <CCF3D8E3-CD1C-36CD-929A-C9972F833F24> /System/Library/Frameworks/CoreWiFi.framework/Versions/A/CoreWiFi
    0x7fff8c2c3000 -     0x7fff8c2ddfff  com.apple.CoreMediaAuthoring (2.1 - 914) <23F2B9D0-7B73-3C42-8EDC-8ADBF9C7B8C2> /System/Library/PrivateFrameworks/CoreMediaAuthoring.framework/Versions/A/CoreMediaAuthoring
    0x7fff8c3e1000 -     0x7fff8c3f5fff  com.apple.speech.synthesis.framework (4.1.12 - 4.1.12) <94EDF2AB-809C-3D15-BED5-7AD45B2A7C16> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
    0x7fff8c3f6000 -     0x7fff8c405fff  com.apple.opengl (1.8.10 - 1.8.10) <AD49CF56-B7C1-3598-8610-58532FC41345> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
    0x7fff8c406000 -     0x7fff8c460ff7  com.apple.opencl (2.2.19 - 2.2.19) <3C7DFB2C-B3F9-3447-A1FC-EAAA42181A6E> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
    0x7fff8c461000 -     0x7fff8c4e1ff7  com.apple.ApplicationServices.ATS (332 - 341.1) <39B53565-FA31-3F61-B090-C787C983142E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
    0x7fff8c4e2000 -     0x7fff8c5e4fff  libJP2.dylib (851) <26FFBDBF-9CCE-33D7-A45B-0A31C98DA37E> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
    0x7fff8c5e5000 -     0x7fff8c667ff7  com.apple.Heimdal (3.0 - 2.0) <54732884-A10C-3603-A05C-BAD5BF65F71F> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
    0x7fff8c668000 -     0x7fff8c669fff  libsystem_blocks.dylib (59) <D92DCBC3-541C-37BD-AADE-ACC75A0C59C8> /usr/lib/system/libsystem_blocks.dylib
    0x7fff8c66f000 -     0x7fff8c691ff7  libxpc.dylib (140.43) <70BC645B-6952-3264-930C-C835010CCEF9> /usr/lib/system/libxpc.dylib
    0x7fff8c722000 -     0x7fff8c72dff7  com.apple.bsd.ServiceManagement (2.0 - 2.0) <C12962D5-85FB-349E-AA56-64F4F487F219> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
    0x7fff8c72e000 -     0x7fff8c755fff  com.apple.framework.familycontrols (4.1 - 410) <50F5A52C-8FB6-300A-977D-5CFDE4D5796B> /System/Library/PrivateFrameworks/FamilyControls.framework/Versions/A/FamilyControls
    0x7fff8c756000 -     0x7fff8c76dfff  com.apple.CFOpenDirectory (10.8 - 151.10) <10F41DA4-AD54-3F52-B898-588D9A117171> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
    0x7fff8c76e000 -     0x7fff8c774fff  libmacho.dylib (829) <BF332AD9-E89F-387E-92A4-6E1AB74BD4D9> /usr/lib/system/libmacho.dylib
    0x7fff8c7c6000 -     0x7fff8c860fff  libvMisc.dylib (380.10) <A7F12764-A94C-36EB-88E0-F826F5AF55B4> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
    0x7fff8c861000 -     0x7fff8c888ff7  com.apple.PerformanceAnalysis (1.16 - 16) <1BDA3662-18B7-3F38-94E5-9ACD477A7682> /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
    0x7fff8c8d9000 -     0x7fff8c8dcfff  com.apple.help (1.3.2 - 42) <418A9A41-BCB4-32A2-97ED-3A388F69CA9D> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
    0x7fff8c8df000 -     0x7fff8c93bfff  com.apple.QuickLookFramework (4.0 - 555.5) <8B9EAC35-98F3-3BF0-8B15-3A5FE39F150A> /System/Library/Frameworks/QuickLook.framework/Versions/A/QuickLook
    0x7fff8d1f2000 -     0x7fff8d1f6fff  libCoreVMClient.dylib (32.5) <DB009CD4-BB0E-3331-BBB4-A118781D193F> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
    0x7fff8d1f7000 -     0x7fff8d206ff7  libxar.1.dylib (105) <B6A7C8AA-3E20-3A1D-A7BA-4FD0052FA508> /usr/lib/libxar.1.dylib
    0x7fff8d248000 -     0x7fff8d294fff  com.apple.framework.CoreWLAN (3.4 - 340.18) <BCFA14A9-728C-371A-936E-2EDF2EC2F40F> /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
    0x7fff8d2ad000 -     0x7fff8d3fffff  com.apple.audio.toolbox.AudioToolbox (1.9.2 - 1.9.2) <DC5F3D1B-036A-37DE-BC24-7636DC95EA1C> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
    0x7fff8d443000 -     0x7fff8d49aff7  com.apple.AppleVAFramework (5.0.19 - 5.0.19) <541A7DBE-F8E4-3023-A3C0-8D5A2A550CFB> /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA
    0x7fff8d4c7000 -     0x7fff8d5c4ff7  libxml2.2.dylib (22.3) <7FD09F53-83DA-3ECD-8DD9-870E1A2F0427> /usr/lib/libxml2.2.dylib
    0x7fff8d5c5000 -     0x7fff8d820ff7  com.apple.QuartzComposer (5.1 - 287.1) <D1DD68D1-05D5-3037-ABB6-BF6EB183C155> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzComposer.framework/Versions/A/QuartzComposer
    0x7fff8d86a000 -     0x7fff8db0eff7  com.apple.CoreImage (8.4.0 - 1.0.1) <CC6DD22B-FFC6-310B-BE13-2397A02C79EF> /System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/CoreImage.framework/Versions/A/CoreImage
    0x7fff8db0f000 -     0x7fff8db14fff  libcache.dylib (57) <65187C6E-3FBF-3EB8-A1AA-389445E2984D> /usr/lib/system/libcache.dylib
    0x7fff8db15000 -     0x7fff8db15fff  libOpenScriptingUtil.dylib (148.3) <F8681222-0969-3B10-8BCE-C55A4B9C520C> /usr/lib/libOpenScriptingUtil.dylib
    0x7fff8db16000 -     0x7fff8dbc9ff7  com.apple.PDFKit (2.8.5 - 2.8.5) <EAAED40E-7B2C-3312-826E-26A9DEDBF0FC> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/PDFKit.framework/Versions/A/PDFKit
    0x7fff8dbca000 -     0x7fff8dbebfff  com.apple.Ubiquity (1.2 - 243.15) <C9A7EE77-B637-3676-B667-C0843BBB0409> /System/Library/PrivateFrameworks/Ubiquity.framework/Versions/A/Ubiquity
    0x7fff8dc3c000 -     0x7fff8dc3eff7  libunc.dylib (25) <2FDC94A7-3039-3680-85F3-2164E63B464D> /usr/lib/system/libunc.dylib
    0x7fff8dc91000 -     0x7fff8dd6bfff  com.apple.backup.framework (1.4.3 - 1.4.3) <6B65C44C-7777-3331-AD9D-438D10AAC777> /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
    0x7fff8dddf000 -     0x7fff8dddffff  com.apple.Carbon (154 - 155) <1B2846B1-384E-3D1C-8999-201215723349> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
    0x7fff8dde0000 -     0x7fff8de01ff7  libCRFSuite.dylib (33) <B49DA255-A4D9-33AF-95AB-B319570CDF7B> /usr/lib/libCRFSuite.dylib
    0x7fff8de18000 -     0x7fff8e0cfff7  com.apple.MediaToolbox (1.0 - 926.104) <916B1ACC-2623-39FB-9B5A-1B0162F8C468> /System/Library/Frameworks/MediaToolbox.framework/Versions/A/MediaToolbox
    0x7fff8e0d0000 -     0x7fff8e0e2ff7  libz.1.dylib (43) <2A1551E8-A272-3DE5-B692-955974FE1416> /usr/lib/libz.1.dylib
    0x7fff8e0e3000 -     0x7fff8e0f6ff7  com.apple.LangAnalysis (1.7.0 - 1.7.0) <023D909C-3AFA-3438-88EB-05D0BDA5AFFE> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
    0x7fff8e0f7000 -     0x7fff8e0fbfff  libGIF.dylib (851) <AD40D084-6E34-38CD-967D-705F94B188DA> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
    0x7fff8e16c000 -     0x7fff8e170fff  com.apple.IOSurface (86.0.4 - 86.0.4) <26F01CD4-B76B-37A3-989D-66E8140542B3> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
    0x7fff8e1cb000 -     0x7fff8e224ff7  com.apple.ImageCaptureCore (5.0.4 - 5.0.4) <84F003C2-5758-3D0A-8644-F3A0BA4F22FC> /System/Library/Frameworks/ImageCaptureCore.framework/Versions/A/ImageCaptureCore
    0x7fff8e225000 -     0x7fff8e22cfff  libGFXShared.dylib (8.10.1) <B4AB9480-2CDB-34F8-8D6F-F5A2CFC221B0> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
    0x7fff8e2d5000 -     0x7fff8e301fff  com.apple.quartzfilters (1.8.0 - 1.7.0) <CCF2C41D-93D0-3547-A2B1-D6A69932CADF> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzFilters.framework/Versions/A/QuartzFilters
    0x7fff8e302000 -     0x7fff8e321ff7  com.apple.ChunkingLibrary (2.0 - 133.3) <8BEC9AFB-DCAA-37E8-A5AB-24422B234ECF> /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary
    0x7fff8fac8000 -     0x7fff8fad6ff7  libsystem_network.dylib (77.10) <2AAA67A1-525E-38F0-8028-1D2B64716611> /usr/lib/system/libsystem_network.dylib
    0x7fff8fb14000 -     0x7fff8fb1cfff  liblaunch.dylib (442.26.2) <2F71CAF8-6524-329E-AC56-C506658B4C0C> /usr/lib/system/liblaunch.dylib
    0x7fff8fb1d000 -     0x7fff8fb57ff7  com.apple.GSS (3.0 - 2.0) <397D7A03-C84B-3379-8766-62832D2D38C2> /System/Library/Frameworks/GSS.framework/Versions/A/GSS
    0x7fff8fb58000 -     0x7fff8fb5dfff  com.apple.OpenDirectory (10.8 - 151.10) <1F47EC96-7403-3690-8D8D-C31D3B6FDA0A> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
    0x7fff8fbb9000 -     0x7fff8fbbafff  libDiagnosticMessagesClient.dylib (8) <8548E0DC-0D2F-30B6-B045-FE8A038E76D8> /usr/lib/libDiagnosticMessagesClient.dylib
    0x7fff8fbbb000 -     0x7fff8fdf0ff7  com.apple.CoreData (106.1 - 407.7) <A676E1A4-2144-376B-92B8-B450DD1D78E5> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
    0x7fff8fdf3000 -     0x7fff8fe00fff  libbz2.1.0.dylib (29) <CE9785E8-B535-3504-B392-82F0064D9AF2> /usr/lib/libbz2.1.0.dylib
    0x7fff8fe01000 -     0x7fff8fe57fff  com.apple.HIServices (1.20 - 417) <BCD36950-013F-35C2-918E-05A93A47BE8C> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
    0x7fff8fe82000 -     0x7fff8fe82fff  com.apple.Cocoa (6.7 - 19) <3CFC90D2-2BE9-3E5C-BFDB-5E161A2C2B29> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
    0x7fff8ff38000 -     0x7fff8ff64fff  com.apple.framework.Apple80211 (8.5 - 850.252) <73506CA1-CF76-3A98-A6F2-3DDAC10CB67A> /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211
    0x7fff8ff65000 -     0x7fff8ff69fff  libpam.2.dylib (20) <C8F45864-5B58-3237-87E1-2C258A1D73B8> /usr/lib/libpam.2.dylib
    0x7fff8ff6a000 -     0x7fff8ff6ffff  libcompiler_rt.dylib (30) <08F8731D-5961-39F1-AD00-4590321D24A9> /usr/lib/system/libcompiler_rt.dylib
    0x7fff8ff70000 -     0x7fff8ffadfef  libGLImage.dylib (8.10.1) <91E31B9B-4141-36D5-ABDC-20F1D6D1D0CF> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
    0x7fff8ffd6000 -     0x7fff90021fff  com.apple.CoreMedia (1.0 - 926.104) <31EAF297-9C42-3D6F-A8A1-CDAB94A26113> /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia
    0x7fff901d4000 -     0x7fff901d6fff  libCVMSPluginSupport.dylib (8.10.1) <F0239392-E0CB-37D7-BFE2-D6F5D42F9196> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
    0x7fff901d7000 -     0x7fff901e2fff  com.apple.CommonAuth (3.0 - 2.0) <8129570F-B9BC-38B4-ACAD-B1ECD2358468> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
    0x7fff901e3000 -     0x7fff90341fef  com.apple.MediaControlSender (1.7 - 170.20) <853BE89D-49B0-3922-9ED5-DDBDE9A97356> /System/Library/PrivateFrameworks/MediaControlSender.framework/Versions/A/MediaControlSender
    0x7fff90418000 -     0x7fff90538fff  com.apple.desktopservices (1.7.4 - 1.7.4) <ED3DA8C0-160F-3CDC-B537-BF2E766AB7C1> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
    0x7fff90657000 -     0x7fff90657fff  libkeymgr.dylib (25) <CC9E3394-BE16-397F-926B-E579B60EE429> /usr/lib/system/libkeymgr.dylib
    0x7fff90924000 -     0x7fff9093bfff  com.apple.GenerationalStorage (1.1 - 132.3) <FD4A84B3-13A8-3C60-A59E-25A361447A17> /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
    0x7fff9093c000 -     0x7fff909e2ff7  com.apple.CoreServices.OSServices (557.6 - 557.6) <E91B0882-E75C-30E9-8DCD-7A0EEE4405CC> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
    0x7fff909e3000 -     0x7fff909effff  com.apple.CrashReporterSupport (10.8.3 - 418) <DE6AFE16-D97E-399D-82ED-3522C773C36E> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
    0x7fff90a19000 -     0x7fff90d49fff  com.apple.HIToolbox (2.0 - 626.1) <656D08C2-9068-3532-ABDD-32EC5057CCB2> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
    0x7fff90d4a000 -     0x7fff90d6afff  libPng.dylib (851) <3466F35C-EC1A-3D1A-80DC-175857FA19D5> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
    0x7fff90d6b000 -     0x7fff910cafff  com.apple.Foundation (6.8 - 945.18) <1D7E58E6-FA3A-3CE8-AC85-B9D06B8C0AA0> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
    0x7fff910cb000 -     0x7fff91158ff7  com.apple.SearchKit (1.4.0 - 1.4.0) <54A8069C-E497-3B07-BEA7-D3BC9DB5B649> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
    0x7fff91159000 -     0x7fff91359fff  libicucore.A.dylib (491.11.3) <5783D305-04E8-3D17-94F7-1CEAFA975240> /usr/lib/libicucore.A.dylib
    0x7fff91374000 -     0x7fff913c3ff7  libcorecrypto.dylib (106.2) <CE0C29A3-C420-339B-ADAA-52F4683233CC> /usr/lib/system/libcorecrypto.dylib
    0x7fff913c4000 -     0x7fff913c4fff  com.apple.vecLib (3.8 - vecLib 3.8) <6CBBFDC4-415C-3910-9558-B67176447789> /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff91543000 -     0x7fff916b8ff7  com.apple.CFNetwork (596.4.3 - 596.4.3) <A57B3308-2F08-3EC3-B4AC-39A3D9F0B9F7> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
    0x7fff916be000 -     0x7fff91708ff7  libGLU.dylib (8.10.1) <6699DEA6-9EEB-3B84-A57F-B25AE44EC584> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
    0x7fff91709000 -     0x7fff91822fff  com.apple.ImageIO.framework (3.2.2 - 851) <6552C673-9F29-3B31-A12E-C4391A950965> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
    0x7fff91823000 -     0x7fff9182bff7  libsystem_dnssd.dylib (379.38.1) <BDCB8566-0189-34C0-9634-35ABD3EFE25B> /usr/lib/system/libsystem_dnssd.dylib
    0x7fff9182c000 -     0x7fff91d9cff7  com.apple.CoreAUC (6.22.03 - 6.22.03) <A77BC97A-B695-3F7E-8696-5B2357C2726B> /System/Library/PrivateFrameworks/CoreAUC.framework/Versions/A/CoreAUC
    0x7fff91d9d000 -     0x7fff91dceff7  com.apple.DictionaryServices (1.2 - 184.4) <FB0540FF-5034-3591-A28D-6887FBC220F7> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
    0x7fff91dea000 -     0x7fff91deeff7  com.apple.TCC (1.0 - 1) <F2F3B753-FC73-3543-8BBE-859FDBB4D6A6> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
    0x7fff91def000 -     0x7fff91e14ff7  libc++abi.dylib (26) <D86169F3-9F31-377A-9AF3-DB17142052E4> /usr/lib/libc++abi.dylib
    0x7fff91e50000 -     0x7fff91ffefff  com.apple.QuartzCore (1.8 - 304.3) <F450F2DE-2F24-3557-98B6-310E05DAC17F> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
    0x7fff92001000 -     0x7fff92029fff  libJPEG.dylib (851) <64A3EB03-34FB-308C-817B-6106D1F4D80F> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
    0x7fff9202a000 -     0x7fff9203fff7  libdispatch.dylib (228.23) <D26996BF-FC57-39EB-8829-F63585561E09> /usr/lib/system/libdispatch.dylib
    0x7fff92040000 -     0x7fff92084fff  libcups.2.dylib (327.7) <9F35B58A-F47E-348A-8E09-E235FA4B9270> /usr/lib/libcups.2.dylib
    0x7fff92085000 -     0x7fff920bbff7  libsystem_info.dylib (406.17) <C9BA1024-043C-3BD5-908F-AF709E05DEE4> /usr/lib/system/libsystem_info.dylib
    0x7fff92119000 -     0x7fff92127fff  libcommonCrypto.dylib (60027) <BAAFE0C9-BB86-3CA7-88C0-E3CBA98DA06F> /usr/lib/system/libcommonCrypto.dylib
    0x7fff92128000 -     0x7fff92ab8627  com.apple.CoreGraphics (1.600.0 - 333.1) <C085C074-7260-3C3D-90C6-A65D3CB2BD41> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
    0x7fff92ccf000 -     0x7fff92de792f  libobjc.A.dylib (532.2) <90D31928-F48D-3E37-874F-220A51FD9E37> /usr/lib/libobjc.A.dylib
    0x7fff92df7000 -     0x7fff92dfbff7  com.apple.CommonPanels (1.2.5 - 94) <5F81D593-4B87-3DCC-B934-625D436B4CB1> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
    0x7fff92dfc000 -     0x7fff92ef1fff  libiconv.2.dylib (34) <FEE8B996-EB44-37FA-B96E-D379664DEFE1> /usr/lib/libiconv.2.dylib
    0x7fff92f42000 -     0x7fff92f4fff7  com.apple.NetAuth (4.0 - 4.0) <A4A21A2F-B26A-3DC9-95E4-DAFA43A4A2C3> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
    0x7fff92f50000 -     0x7fff92f51ff7  libsystem_sandbox.dylib (220.3) <B739DA63-B675-387A-AD84-412A651143C0> /usr/lib/system/libsystem_sandbox.dylib
    0x7fff92f52000 -     0x7fff92fb1fff  com.apple.AE (645.6 - 645.6) <44F403C1-660A-3543-AB9C-3902E02F936F> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
    0x7fff92fb2000 -     0x7fff9300eff7  com.apple.Symbolication (1.3 - 93) <D3AAB36A-D5EB-3044-BE9D-0B77E64C00FC> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
    0x7fff9300f000 -     0x7fff93012fff  com.apple.AppleSystemInfo (2.0 - 2) <C9D7F3A6-F926-39F3-8F55-A3A137DDAE50> /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo
    0x7fff93013000 -     0x7fff93013fff  com.apple.Accelerate (1.8 - Accelerate 1.8) <878A6E7E-CB34-380F-8212-47FBF12C7C96> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
    0x7fff93028000 -     0x7fff932f9ff7  com.apple.security (7.0 - 55179.13) <F428E306-C407-3B55-BA82-E58755E8A76F> /System/Library/Frameworks/Security.framework/Versions/A/Security
    0x7fff93578000 -     0x7fff93676fff  com.apple.QuickLookUIFramework (4.0 - 555.5) <EE02B332-20F3-3226-A022-D71B808E1CC4> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuickLookUI.framework/Versions/A/QuickLookUI
    0x7fff93677000 -     0x7fff9367dff7  libunwind.dylib (35.1) <21703D36-2DAB-3D8B-8442-EAAB23C060D3> /usr/lib/system/libunwind.dylib
    0x7fff93686000 -     0x7fff93689ff7  libdyld.dylib (210.2.3) <F59367C9-C110-382B-A695-9035A6DD387E> /usr/lib/system/libdyld.dylib
    0x7fff9369f000 -     0x7fff936cdff7  libsystem_m.dylib (3022.6) <11B6081D-6212-3EAB-9975-BED6234BD6A5> /usr/lib/system/libsystem_m.dylib
    0x7fff936ce000 -     0x7fff9371fff7  com.apple.SystemConfiguration (1.12.2 - 1.12.2) <581BF463-C15A-363B-999A-E830222FA925> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
    0x7fff93720000 -     0x7fff93891ff7  com.apple.QTKit (7.7.1 - 2599.39) <39BD9430-9946-35DE-BE03-3EE31E339589> /System/Library/Frameworks/QTKit.framework/Versions/A/QTKit
    0x7fff9389e000 -     0x7fff938bdff7  libresolv.9.dylib (51) <0882DC2D-A892-31FF-AD8C-0BB518C48B23> /usr/lib/libresolv.9.dylib
    0x7fff938be000 -     0x7fff938befff  com.apple.Accelerate.vecLib (3.8 - vecLib 3.8) <F565B686-24E2-39F2-ACC3-C5E4084476BE> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff938c2000 -     0x7fff938cbff7  com.apple.CommerceCore (1.0 - 26.2) <AF35874A-6FA7-328E-BE30-8BBEF0B741A8> /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Frameworks/CommerceCore.framework/Versions/A/CommerceCore
    0x7fff9391b000 -     0x7fff939d8ff7  com.apple.ColorSync (4.8.0 - 4.8.0) <73BE495D-8985-3B88-A7D0-23DF0CB50304> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
    0x7fff939e7000 -     0x7fff93b82fef  com.apple.vImage (6.0 - 6.0) <FAE13169-295A-33A5-8E6B-7C2CC1407FA7> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
    0x7fff93b83000 -     0x7fff93b99fff  com.apple.MultitouchSupport.framework (237.4 - 237.4) <0F7FEE29-161B-3D8E-BE91-308CBD354461> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
    0x7fff93bd2000 -     0x7fff93e81fff  com.apple.imageKit (2.2 - 673) <5F0504DA-7CE9-3D97-B2B5-3C5839AEBF1F> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/ImageKit.framework/Versions/A/ImageKit
    0x7fff93f4b000 -     0x7fff93fccfff  com.apple.Metadata (10.7.0 - 707.12) <69E3EEF7-8B7B-3652-8320-B8E885370E56> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
    0x7fff93fcd000 -     0x7fff93fd3fff  com.apple.DiskArbitration (2.5.2 - 2.5.2) <C713A35A-360E-36CE-AC0A-25C86A3F50CA> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x7fff93fd4000 -     0x7fff93fe7ff7  libbsm.0.dylib (32) <F497D3CE-40D9-3551-84B4-3D5E39600737> /usr/lib/libbsm.0.dylib
    0x7fff93ff6000 -     0x7fff94432fef  com.apple.VideoToolbox (1.0 - 926.104) <9231E12F-3D46-3F3D-B24F-6E16127E5909> /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox
    0x7fff9499b000 -     0x7fff949f0ff7  libTIFF.dylib (851) <7706BB07-E7E8-38BE-A5F0-D8B63E3B9283> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
    0x7fff94a30000 -     0x7fff94ac4ff7  com.apple.CorePDF (2.2 - 2.2) <F17D7D37-4190-38E2-9F43-DD4F87792390> /System/Library/PrivateFrameworks/CorePDF.framework/Versions/A/CorePDF
    0x7fff94ac5000 -     0x7fff94b2dff7  libc++.1.dylib (65.1) <E5A0C88E-0837-3015-A987-F8C5A0D35DD6> /usr/lib/libc++.1.dylib
    0x7fff94b3b000 -     0x7fff94b58ff7  com.apple.openscripting (1.3.6 - 148.3) <C008F56A-1E01-3D4C-A9AF-97799D0FAE69> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
    0x7fff94bb5000 -     0x7fff94fd2fff  FaceCoreLight (2.4.1) <DDAFFD7A-D312-3407-A010-5AEF3E17831B> /System/Library/PrivateFrameworks/FaceCoreLight.framework/Versions/A/FaceCoreLight
    0x7fff94fd3000 -     0x7fff94fd5fff  libquarantine.dylib (52.1) <143B726E-DF47-37A8-90AA-F059CFD1A2E4> /usr/lib/system/libquarantine.dylib
    0x7fff94fd6000 -     0x7fff95271ff7  com.apple.JavaScriptCore (8536 - 8536.30) <FE3C5ADD-43D3-33C9-9150-8DCEFDA218E2> /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore
    0x7fff95272000 -     0x7fff95274fff  com.apple.securityhi (4.0 - 55002) <26E6D477-EF61-351F-BA8C-67824AA231C6> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
    0x7fff952aa000 -     0x7fff952bffff  com.apple.ImageCapture (8.0 - 8.0) <71B24609-DEE9-3927-9C82-62E72270299C> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
    0x7fff95318000 -     0x7fff9549efff  libBLAS.dylib (1073.4) <C102C0F6-8CB6-3B49-BA6B-2EB61F0B2784> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
    0x7fff954ee000 -     0x7fff954f9ff7  com.apple.DisplayServicesFW (2.7.2 - 357) <8AE56B58-A521-3F29-AAE2-10ADADBD30EA> /System/Library/PrivateFrameworks/DisplayServices.framework/Versions/A/DisplayServices
    0x7fff954fa000 -     0x7fff95562fff  libvDSP.dylib (380.10) <3CA154A3-1BE5-3CF4-BE48-F0A719A963BB> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
    0x7fff95563000 -     0x7fff95564ff7  libremovefile.dylib (23.2) <6763BC8E-18B8-3AD9-8FFA-B43713A7264F> /usr/lib/system/libremovefile.dylib
    0x7fff95565000 -     0x7fff955c8fff  com.apple.audio.CoreAudio (4.1.2 - 4.1.2) <FEAB83AB-1DE5-3813-BA48-7A7F2374CCF0> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
    0x7fff955cf000 -     0x7fff95638fff  libstdc++.6.dylib (56) <EAA2B53E-EADE-39CF-A0EF-FB9D4940672A> /usr/lib/libstdc++.6.dylib
    0x7fff95639000 -     0x7fff9566ffff  com.apple.DebugSymbols (98 - 98) <7059F71D-9A82-3D32-99BB-E043DEDA6174> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
    0x7fff95670000 -     0x7fff95721fff  com.apple.LaunchServices (539.9 - 539.9) <07FC6766-778E-3479-8F28-D2C9917E1DD1> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
    0x7fff95722000 -     0x7fff9576ffff  com.apple.CoreMediaIO (309.0 - 4163.1) <8FD1C1A9-25C5-3B9E-A76D-BE813253B358> /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/CoreMediaIO
    0x7fff95770000 -     0x7fff9588afff  com.apple.coreavchd (5.6.0 - 5600.4.16) <85670361-96CA-3805-B981-B41B47E99A37> /System/Library/PrivateFrameworks/CoreAVCHD.framework/Versions/A/CoreAVCHD
    0x7fff9588b000 -     0x7fff95898fff  com.apple.AppleFSCompression (49 - 1.0) <E616053D-D3C2-3600-B8DF-A5E0D9665634> /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
    0x7fff958ac000 -     0x7fff958baff7  libkxld.dylib (2050.48.10) <150B899B-6846-300F-9AD2-DE4ABEC7D91F> /usr/lib/system/libkxld.dylib
    0x7fff95a49000 -     0x7fff95d60ff7  com.apple.CoreServices.CarbonCore (1037.6 - 1037.6) <1E567A52-677F-3168-979F-5FBB0818D52B> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
    0x7fff95d61000 -     0x7fff95dffff7  com.apple.ink.framework (10.8.2 - 150) <3D8D16A2-7E01-3EA1-B637-83A36D353308> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
    0x7fff95eb9000 -     0x7fff95f7eff7  com.apple.coreui (2.0 - 181.1) <83D2C92D-6842-3C9D-9289-39D5B4554C3A> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
    0x7fff95fc7000 -     0x7fff95fcefff  com.apple.NetFS (5.0 - 4.0) <195D8EC9-72BB-3E04-A64D-E1A89B4850C1> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
    0x7fff95fcf000 -     0x7fff95fd1fff  com.apple.TrustEvaluationAgent (2.0 - 23) <A97D348B-32BF-3E52-8DF2-59BFAD21E1A3> /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent
    0x7fff95fe9000 -     0x7fff9602cff7  com.apple.RemoteViewServices (2.0 - 80.6) <5CFA361D-4853-3ACC-9EFC-A2AC1F43BA4B> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
    0x7fff9602d000 -     0x7fff96048ff7  libsystem_kernel.dylib (2050.48.10) <A01416A7-3596-3A38-8F72-C5071198BD8B> /usr/lib/system/libsystem_kernel.dylib
    0x7fff96056000 -     0x7fff96078ff7  com.apple.Kerberos (2.0 - 1) <416543F5-E7AF-3269-843F-C8CDA8DD0FFA> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
    0x7fff9633e000 -     0x7fff96349fff  libsystem_notify.dylib (98.5) <C49275CC-835A-3207-AFBA-8C01374927B6> /usr/lib/system/libsystem_notify.dylib
    0x7fff9634f000 -     0x7fff9634fffd  com.apple.audio.units.AudioUnit (1.9.2 - 1.9.2) <6D314680-7409-3BC7-A807-36341411AF9A> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
    0x7fff96350000 -     0x7fff9644dfff  libsqlite3.dylib (138.1) <ADE9CB98-D77D-300C-A32A-556B7440769F> /usr/lib/libsqlite3.dylib
    0x7fff96488000 -     0x7fff96492fff  com.apple.speech.recognition.framework (4.1.5 - 4.1.5) <5A4B532E-3428-3F0A-8032-B0AFFF72CA3D> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
    0x7fff96493000 -     0x7fff964eaff7  com.apple.ScalableUserInterface (1.0 - 1) <93C14595-6172-37E9-88F2-CBC80A1C54D0> /System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/ScalableUserInterface.framework/Versions/A/ScalableUserInterface
    0x7fff964eb000 -     0x7fff96515ff7  com.apple.CoreVideo (1.8 - 99.4) <E5082966-6D81-3973-A05A-38AA5B85F886> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
    0x7fff96527000 -     0x7fff9656aff7  com.apple.bom (12.0 - 192) <0EFE0F2D-B6DE-3D1E-93C2-EED6D96F70A2> /System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom
    0x7fff967f0000 -     0x7fff9684afff  com.apple.print.framework.PrintCore (8.3 - 387.2) <5BA0CBED-4D80-386A-9646-F835C9805B71> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
    0x7fff9684b000 -     0x7fff96862fff  libGL.dylib (8.10.1) <F8BABA3C-7810-3A65-83FC-61945AA50E90> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
    0x7fff96863000 -     0x7fff968b2ff7  libFontRegistry.dylib (100) <F7EC0287-58E4-3ABE-A45E-B105A68EA76E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
    0x7fff968c0000 -     0x7fff968c1ff7  libSystem.B.dylib (169.3) <92475A81-385C-32B9-9D6D-38E4BAC90996> /usr/lib/libSystem.B.dylib
    0x7fff9694d000 -     0x7fff9694eff7  libdnsinfo.dylib (453.19) <14202FFB-C3CA-3FCC-94B0-14611BF8692D> /usr/lib/system/libdnsinfo.dylib
    0x7fff96982000 -     0x7fff96982fff  com.apple.CoreServices (57 - 57) <45F1466A-8264-3BB7-B0EC-E5E5BFBED143> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
    0x7fff9698e000 -     0x7fff9698ffff  liblangid.dylib (116) <864C409D-D56B-383E-9B44-A435A47F2346> /usr/lib/liblangid.dylib
    0x7fff96c4b000 -     0x7fff96e35ff7  com.apple.CoreFoundation (6.8 - 744.19) <0F7403CA-2CB8-3D0A-992B-679701DF27CA> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff96e6c000 -     0x7fff97a99fff  com.apple.AppKit (6.8 - 1187.39) <199962F0-B06B-3666-8FD5-5C90374BA16A> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
    0x7fff97d10000 -     0x7fff97d13fff  libRadiance.dylib (851) <C317B2C7-CA3A-329F-B6DC-7CC33FE08C81> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
    0x7fff97d14000 -     0x7fff97d82ff7  com.apple.framework.IOKit (2.0.1 - 755.42.1) <A90038ED-48F2-3CC9-A042-53A3D7985844> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff97d83000 -     0x7fff97e55ff7  com.apple.CoreText (260.0 - 275.16) <5BFC1D67-6A6F-38BC-9D90-9C712684EDAC> /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
    0x7fff97e56000 -     0x7fff97f22ff7  libsystem_c.dylib (825.40.1) <543B05AE-CFA5-3EFE-8E58-77225411BA6B> /usr/lib/system/libsystem_c.dylib
    0x7fff97fac000 -     0x7fff98019ff7  com.apple.datadetectorscore (4.1 - 269.3) <5775F0DB-87D6-310D-8B03-E2AD729EFB28> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
    0x7fff98079000 -     0x7fff98184fff  libFontParser.dylib (84.6) <96C42E49-79A6-3475-B5E4-6A782599A6DA> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
    0x7fff98185000 -     0x7fff98187ff7  com.apple.print.framework.Print (8.0 - 258) <8F243E49-021F-3892-B555-3010A7F450A2> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
    0x7fff9820b000 -     0x7fff98212fff  libcopyfile.dylib (89) <876573D0-E907-3566-A108-577EAD1B6182> /usr/lib/system/libcopyfile.dylib
    0x7fff985ff000 -     0x7fff9867eff7  com.apple.securityfoundation (6.0 - 55115.4) <8676E0DF-295F-3690-BDAA-6C9C1D210B88> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
    0x7fff9867f000 -     0x7fff98a76fff  libLAPACK.dylib (1073.4) <D632EC8B-2BA0-3853-800A-20DA00A1091C> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
    0x7fff98bd1000 -     0x7fff98bd1fff  com.apple.ApplicationServices (45 - 45) <5302CC85-D534-3FE5-9E56-CA16762177F6> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 1011
    thread_create: 3
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=174.2M resident=71.3M(41%) swapped_out_or_unallocated=102.9M(59%)
Writable regions: Total=65.7M written=11.1M(17%) resident=17.8M(27%) swapped_out=0K(0%) unallocated=47.9M(73%)

REGION TYPE                      VIRTUAL
===========                      =======
MALLOC                             54.9M
MALLOC guard page                    48K
STACK GUARD                        56.0M
Stack                              10.0M
VM_ALLOCATE                         260K
__DATA                             15.8M
__IMAGE                             528K
__LINKEDIT                         52.8M
__TEXT                            121.5M
__UNICODE                           544K
mapped file                        18.1M
shared memory                        12K
===========                      =======
TOTAL                             330.5M

_getRunningApps is spontaneously exiting

LDTP goes through a few code paths that call _getRunningApps. This code only works in the main thread, but LDTP calls it from threads spawned by the xmlrpc server.

Calling ldtp.waittillguiexist('Calculator') is an easy way to test this issue.

  1. I think we need to warn on things that start the run loop when called outside the main thread.
  2. Perhaps we can modify the LDTP daemon code to only work in the main thread.

Related to issue #5

Signal only works on main thread

File "build/bdist.macosx-10.8-intel/egg/atomac/ldtp/init.py", line 175, in run
if not self.poll_server():
File "build/bdist.macosx-10.8-intel/egg/atomac/ldtp/init.py", line 190, in poll_server
message = getlastlog()
File "build/bdist.macosx-10.8-intel/egg/atomac/ldtp/client.py", line 74, in call
return self.__send(self.__name, args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xmlrpclib.py", line 1575, in __request
File "build/bdist.macosx-10.8-intel/egg/atomac/ldtp/client.py", line 170, in request
sigusr1 = signal.signal(signal.SIGUSR1, self._handle_signal)
ValueError: signal only works in main thread

Unable to cancel Security dialogue after password entry

Don't think this is a pyatom/ldtp problem.
When the security dialogue appears form the installer and a user enters some text into
the password box you cannot 'cancel' that dialogue from ptatom/ldtp.
I have tried:
Pressing the securityWin.AXCancelButton.Press()
also
(security.findFirstR(AXRole='AXButton',AXTitle='Cancel')).Press()
Both don't work. I don't think we can use the click function as the security dialogue has no title.

Add unit tests

The process we used internally for testing changes to PyATOM can't be used externally. Need to create a set of unit tests for the package.

Compilation warning OS X 10.9

James, probably you might have already fixed it, just incase filing it:

clang: warning: argument unused during compilation: '-mno-fused-madd'
atomac/_a11y/a11ymodule.c:657:10: warning: 'GetProcessForPID' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations]
err = GetProcessForPID(pid, &psn);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Processes.h:930:1: note:
'GetProcessForPID' declared here
GetProcessForPID(
^
1 warning generated.
atomac/_a11y/a11ymodule.c:657:10: warning: 'GetProcessForPID' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations]
err = GetProcessForPID(pid, &psn);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Processes.h:930:1: note:
'GetProcessForPID' declared here
GetProcessForPID(
^
1 warning generated.
cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch x86_64 -arch i386 -pipe -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c atomac/_a11y/conversion.c -o build/temp.macosx-10.9-intel-2.7/atomac/_a11y/conversion.o
clang: warning: argument unused during compilation: '-mno-fused-madd'
cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch x86_64 -arch i386 -pipe -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c atomac/_a11y/axlib.c -o build/temp.macosx-10.9-intel-2.7/atomac/_a11y/axlib.o
clang: warning: argument unused during compilation: '-mno-fused-madd'
atomac/_a11y/axlib.c:49:8: warning: 'AXAPIEnabled' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations]
if (AXAPIEnabled() != 0) {
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/AXUIElement.h:49:16: note:
'AXAPIEnabled' declared here
extern Boolean AXAPIEnabled (void) CF_DEPRECATED_MAC(10_0, 10_9);
^
atomac/_a11y/axlib.c:78:4: warning: 'GetFrontProcess' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations]
GetFrontProcess(&psn);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Processes.h:434:1: note:
'GetFrontProcess' declared here
GetFrontProcess(ProcessSerialNumber * PSN) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9;
^
atomac/_a11y/axlib.c:79:4: warning: 'GetProcessPID' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations]
GetProcessPID(&psn, &pid);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Processes.h:893:1: note:
'GetProcessPID' declared here
GetProcessPID(
^
3 warnings generated.
atomac/_a11y/axlib.c:49:8: warning: 'AXAPIEnabled' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations]
if (AXAPIEnabled() != 0) {
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/AXUIElement.h:49:16: note:
'AXAPIEnabled' declared here
extern Boolean AXAPIEnabled (void) CF_DEPRECATED_MAC(10_0, 10_9);
^
atomac/_a11y/axlib.c:78:4: warning: 'GetFrontProcess' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations]
GetFrontProcess(&psn);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Processes.h:434:1: note:
'GetFrontProcess' declared here
GetFrontProcess(ProcessSerialNumber * PSN) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9;
^
atomac/_a11y/axlib.c:79:4: warning: 'GetProcessPID' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations]
GetProcessPID(&psn, &pid);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/Processes.h:893:1: note:
'GetProcessPID' declared here
GetProcessPID(
^
3 warnings generated.

Document timeouts when clicking install buttons and such

Apple's a11y API can return an error when pushing a botton with an associated method that blocks, never returning control back to the main loop. We wrap this kind of call in a try/except block - but the behavior is very confusing for new users.

On OSX 10.9 atomac.NativeUIElement.getFrontmostApp() always returns empty list

Traceback (most recent call last):
File "build/bdist.macosx-10.9-intel/egg/atomac/ldtpd/utils.py", line 180, in _dispatch
return getattr(self, method)(*args)
File "build/bdist.macosx-10.9-intel/egg/atomac/ldtpd/core.py", line 547, in click
self.generatemouseevent(size[0] + size[2]/2, size[1] + size[3]/2, "b1c")
File "build/bdist.macosx-10.9-intel/egg/atomac/ldtpd/mouse.py", line 88, in generatemouseevent
window=self._get_front_most_window()
File "build/bdist.macosx-10.9-intel/egg/atomac/ldtpd/utils.py", line 191, in _get_front_most_window
return front_app.windows()[0]
IndexError: list index out of range

Is 10.7.3 supported?

I'm trying out pyatom on 10.7.3 & things don't seem to be working correctly. Here is an e.g.

>>> atomac.launchAppByBundleId('com.apple.Automator')
>>> automator = atomac.getAppRefByBundleId('com.apple.Automator')
>>> automator
<atomac.AXClasses.NativeUIElement <No role!> ''>

The first statement launches the automator but for some reason I get <No role!> instead of "AXApplication u'Automator'". Is there something that I'm missing installation/configuration wise?

Method to hold down modifier keys

We need to be able to hold down a key, such as the option key, when interacting with the UI. Need a method to hold down and release modifier keys.

Add a method to move the mouse in AXClasses.py

Just like:

def mouseMove(self, x, y):
coord = Quartz.CGPointMake(x, y)
mouseMove = Quartz.CGEventCreateMouseEvent(None, Quartz.kCGEventMouseMoved, coord, Quartz.kCGMouseButtonLeft)
Quartz.CGEventPost(Quartz.kCGHIDEventTap, mouseMove)

Request couple of new mouse APIs

  1. Mouse press
  2. Mouse release
  3. Mouse abs / rel

1 and 2 will be used for drag and drop
3 will be also for the same, but for mouse move simulation

TypeError('an integer is required',) in <bound method Transport.__del__ of <atomac.ldtp.client.Transport instance at 0x109f9e758>> ignored

Trying to use LDTP/PyAtom with Robot Framework (http://code.google.com/p/robotframework) gives the following error at the end of a test execution:

Exception TypeError: TypeError('an integer is required',) in <bound method Transport.__del__ of <atomac.ldtp.client.Transport instance at 0x109f9e758>> ignored

To reproduce this:

- Install Robot Framework.
- Create a Robot test case file test.txt (note: 2 spaces after Library):

* Settings
Library  test1
* Test Cases
abc
    test

- Create a library file test1.py:

from atomac.ldtp import *
def test():
    pass

- Run the test: pybot test.txt

The expected Robot Framework output is produced, followed by:

Exception TypeError: TypeError('an integer is required',) in <bound method Transport.__del__ of <atomac.ldtp.client.Transport instance at 0x109f9e758>> ignored

So Robot Framework (pybot) reads the test case file test.txt, loads the library test1.py (which loads atomac.ldtp), and runs the test (which here is simplified to just return). Everything seems to be ok other than this error produced at the end.

Possibly related to issue #56?

Problem with .Press() after popup is shown

Hi, I have problem with handling response when popup is opened after method Press().

I have this part of code:

  1. self.bundleId = self.PrepareApp(self.args[1])
    #splits 'com.eset.ecsp.5/AXChildren[0]/AXChildre[1]' into bundleId['bundleID'] and bundleId['path'] where bundleId = com.eset.ecsp.5 and path is all other
  2. self.main = self.AsociateApp(self.bundleId['bundleID'])
    #asociate application , this mean I will get back to Parent window
  3. self.click = "self.main"+self.bundleid['path']
    #prepare for click
  4. self.click = self.click.replace('/','.')
    #replace / from repository to .
  5. getattr(eval(self.click),'Press')
    #press selected button

I'm using it to click all over the application but there is problem when i'm trying to click on button that shows popup window.
Press() is successful but I get error:
Error performing requeted action (AXError -25204)

Thanks a lot

Cannot run pyatom/atomac via SSH?

I have installed atomac and related Python modules in my Mac and I can call the methods after importing atomac in the Terminal. But I cannot call the same methods from Windows via Putty (SSH). Does anyone know why?

Rename module

We are atom in pypi, we should probably rename the module to atom.

sendKeys doesn't support newlines

Looks like there's two bugs here. sendKeys balks at \n, and if you try to use the RETURN constant, it also throws up with a recursion limit error.

New Release

Is there going to be a new release anytime soon? It would be nice to get the latest code from easy install or pip

Stack overflow when trying to send an underscore (using sendKey)

I tried to send an underscore (_) to an app using app.sendKeys("_") but that causes an stack overflow:

Traceback (most recent call last):
  File "TestFinderSafeCopy.py", line 78, in test_test1
    with NewFinderWindowForDirectory(self.finderRC, tmp.src) as winSrc:
  File "TestFinderSafeCopy.py", line 61, in __enter__
    self._finderRC.openFolderInNewWindow(self._dir)
  File "TestFinderSafeCopy.py", line 37, in openFolderInNewWindow
    app.sendKey(c)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 827, in sendKey
    return self._sendKey(keychr)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 278, in _sendKey
    self._addKeyToQueue(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 227, in _addKeyToQueue
    self._sendKeyWithModifiers(keychr, [AXKeyCodeConstants.SHIFT]);
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 378, in _sendKeyWithModifiers
    self._sendKey(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 278, in _sendKey
    self._addKeyToQueue(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 227, in _addKeyToQueue
    self._sendKeyWithModifiers(keychr, [AXKeyCodeConstants.SHIFT]);
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 378, in _sendKeyWithModifiers
    self._sendKey(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 278, in _sendKey
    self._addKeyToQueue(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 227, in _addKeyToQueue
    self._sendKeyWithModifiers(keychr, [AXKeyCodeConstants.SHIFT]);
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 378, in _sendKeyWithModifiers
    self._sendKey(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 278, in _sendKey
    self._addKeyToQueue(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 227, in _addKeyToQueue
    self._sendKeyWithModifiers(keychr, [AXKeyCodeConstants.SHIFT]);
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 378, in _sendKeyWithModifiers
    self._sendKey(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 278, in _sendKey
    self._addKeyToQueue(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 227, in _addKeyToQueue
    self._sendKeyWithModifiers(keychr, [AXKeyCodeConstants.SHIFT]);
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 378, in _sendKeyWithModifiers
    self._sendKey(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 278, in _sendKey
    self._addKeyToQueue(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 227, in _addKeyToQueue
    self._sendKeyWithModifiers(keychr, [AXKeyCodeConstants.SHIFT]);
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 378, in _sendKeyWithModifiers
    self._sendKey(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 278, in _sendKey
    self._addKeyToQueue(keychr, modFlags, globally=globally)
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 227, in _addKeyToQueue
    self._sendKeyWithModifiers(keychr, [AXKeyCodeConstants.SHIFT]);
  File "/Library/Python/2.7/site-packages/atomac-1.1.0-py2.7-macosx-10.8-intel.egg/atomac/AXClasses.py", line 378, in _sendKeyWithModifiers
[...]

Mac OS 10.7 setup

How do I ...?

New 10.7.1 system. Loaded Xcode 4

Ran " $ sudo easy_install atomic"
That created /Library/Python/2.5/site-packages/atomac-0.9.3-py2.5-macosx-10.7-x86_64.egg on my system

So I set the PYTHONPATH environment variable to /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7:/Library/Python/2.5/site-packages

But then I get this:

[Simba]~/Desktop/testing 7:python
Python 2.7 (r27:82508, Jul 3 2010, 20:17:05)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

import pyatom
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named pyatom

AXSelectedTextRange: Return value not supported yet

I have the handle of AxTextField and I could get AXValue, AXEnabled, AXNumberOfCharacters, but AXSelectedTextRange doesn't work.

I'm accessing this way:

    print object_handle.AXSelectedTextRange
    print object_handle.AXSelectedTextRange.loc

<atomac.AXClasses.NativeUIElement AXTextField u'pyatom ldtp'>
Traceback (most recent call last):
File "core.py", line 391, in
print test.getcursorposition("Open", "txttextfield")
File "/Users/nags/work/pyatom/atomac/ldtpd/text.py", line 264, in getcursorposition
print object_handle.AXSelectedTextRange
File "build/bdist.macosx-10.7-intel/egg/atomac/AXClasses.py", line 662, in getattr
atomac._a11y.ErrorUnsupported: Return value not supported yet.

Using <space> tag throws exception, but adding some other tag in front works fine

l.generatekeyevent('')
Traceback (most recent call last):
File "", line 1, in
File "build/bdist.macosx-10.9-intel/egg/atomac/ldtp/client.py", line 80, in call
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xmlrpclib.py", line 1578, in __request
verbose=self.__verbose
File "build/bdist.macosx-10.9-intel/egg/atomac/ldtp/client.py", line 204, in request
xmlrpclib.Fault: <Fault 1: "<type 'exceptions.AttributeError'>:Object <atomac.AXClasses.NativeUIElement AXWindow u'vtaf \u2014 root@v...'> has no attribute eventList">
l.generatekeyevent('a') # This works
1

Traceback (most recent call last):
File "build/bdist.macosx-10.9-intel/egg/atomac/ldtpd/utils.py", line 180, in _dispatch
return getattr(self, method)(*args)
File "build/bdist.macosx-10.9-intel/egg/atomac/ldtpd/text.py", line 44, in generatekeyevent
key_combo_action = KeyComboAction(window, data)
File "build/bdist.macosx-10.9-intel/egg/atomac/ldtpd/keypress_actions.py", line 147, in init
self._doCombo()
File "build/bdist.macosx-10.9-intel/egg/atomac/ldtpd/keypress_actions.py", line 154, in _doCombo
self._window.sendKey(key_val.value)
File "build/bdist.macosx-10.9-intel/egg/atomac/AXClasses.py", line 849, in sendKey
return self._sendKey(keychr)
File "build/bdist.macosx-10.9-intel/egg/atomac/AXClasses.py", line 279, in _sendKey
self._postQueuedEvents()
File "build/bdist.macosx-10.9-intel/egg/atomac/AXClasses.py", line 189, in _postQueuedEvents
while (len(self.eventList) > 0):
File "build/bdist.macosx-10.9-intel/egg/atomac/AXClasses.py", line 726, in getattr
raise AttributeError('Object %s has no attribute %s' % (self, name))
AttributeError: Object <atomac.AXClasses.NativeUIElement AXWindow u'vtaf \u2014 root@v...'> has no attribute eventList

Method _queueMouseButton does not post the event to the given app

File AXClasses.py

There is a code to get the appPsn:

372 # To direct output to the correct application need the PSN:
373 appPsn = self._getPsnForPid(self._getPid())

But at the end, this value is never used:

400 # Queue the events
401 self._queueEvent(Quartz.CGEventPost,
402 (Quartz.kCGSessionEventTap, buttonDown))
403 self._queueEvent(Quartz.CGEventPost,
404 (Quartz.kCGSessionEventTap, buttonUp))

I think it should work in the same way as in the method _addKeyToQueue:

224 # Post the event to the given app
225 if not globally:
226 self._queueEvent(Quartz.CGEventPostToPSN, (appPsn, keyDown))
227 self._queueEvent(Quartz.CGEventPostToPSN, (appPsn, keyUp))
228 else:
229 self._queueEvent(Quartz.CGEventPost, (0, keyDown))
230 self._queueEvent(Quartz.CGEventPost, (0, keyUp))

Handle nulls in attributes

Attributes can be null and setattributevalue supports null. Currently, reading a null attribute raises an exception, but it should return None.

sendGlobalKeys* gets app PSN

The calls to get the app's PSN should be moved to the "if globally" branch, rather than being called above. For some reason, getPsn fails in some applications. (Reported via IRC)

Mouse smooth move/dragging

The mouse functions could use some more fleshing out. In particular, smooth moving and drags would probably be helpful.

Python interpreter is crashed when access to app attributes after app close

The following script leads to python interpreter crash:

import atomac
atomac.launchAppByBundleId('com.apple.Automator') # could be any app
aut = atomac.getAppRefByBundleId('com.apple.Automator')

switch to the app and close it

aut.getAttributes()

After that python gets crashed.

Environment info: OS X 10.9.2, CPython 2.7.5

Implicit conversion warnings in conversion.c

On 10.7 systems:
pyatom/_a11y/conversion.c: In function ‘CGValueToPyTuple’:
pyatom/_a11y/conversion.c:121: warning: implicit conversion shortens 64-bit value into a 32-bit value
pyatom/_a11y/conversion.c:122: warning: implicit conversion shortens 64-bit value into a 32-bit value
pyatom/_a11y/conversion.c:130: warning: implicit conversion shortens 64-bit value into a 32-bit value
pyatom/_a11y/conversion.c:131: warning: implicit conversion shortens 64-bit value into a 32-bit value

Please add double click with mod function

Can one of the contributors add this to AXClasses?

def doubleMouseButtonLeftWithMods(self, coord, modifiers):
''' Double Click the left mouse button with modifiers pressed

      Parameters: coordinates to click; modifiers (list)
      Returns: None
  '''
  modFlags = self._pressModifiers(modifiers)
  self._queueMouseButton(coord, Quartz.kCGMouseButtonLeft, modFlags)
  self._queueMouseButton(coord, Quartz.kCGMouseButtonLeft, modFlags,
                         clickCount=2)
  self._releaseModifiers(modifiers)
  self._postQueuedEvents()

Can't start using atomac.

I'm trying to execute an example which is done in "Usage". But at the step

sheet = window.sheets()[0]

i'm getting an error

Traceback (most recent call last):
File "", line 1, in
IndexError: list index out of range

I can't understand why i'm getting this error, please help. Beforehand sorry fo my english, it can be very poor.

Formatting cleanup

The source is not PEP-8 at all. Most problematic is the 3 space convention. It should really be globally changed to four. Whatever other PEP-8 changes can be made without breaking the API would be good as well. In the same vein, the C code should be checked for PEP-7 compliance.

LittleSnitchNetworkMonitor causing ldtp failure

I have the above network monitor installed.
When I call getwindowlist() it fails:
app is <atomac.AXClasses.NativeUIElement None None>
pid is 218 gui is <NSRunningApplication: 0x7fccb3814cc0 (at.obdev.LittleSnitchNetworkMonitor - 218)>

Traceback (most recent call last):
File "build/bdist.macosx-10.8-intel/egg/atomac/ldtpd/utils.py", line 178, in _dispatch
return getattr(self, method)(_args)
File "build/bdist.macosx-10.8-intel/egg/atomac/ldtpd/core.py", line 110, in getwindowlist
return self._get_windows(True).keys()
File "build/bdist.macosx-10.8-intel/egg/atomac/ldtpd/utils.py", line 323, in _get_windows
app_windows=app.windows()
File "build/bdist.macosx-10.8-intel/egg/atomac/AXClasses.py", line 1070, in windows
return self._convenienceMatch('AXWindow', 'AXTitle', match)
File "build/bdist.macosx-10.8-intel/egg/atomac/AXClasses.py", line 1034, in _convenienceMatch
return self.findAll(AXRole=role, *_kwargs)
File "build/bdist.macosx-10.8-intel/egg/atomac/AXClasses.py", line 769, in findAll
return self._findAll(**kwargs)
File "build/bdist.macosx-10.8-intel/egg/atomac/AXClasses.py", line 578, in _findAll
for item in self._generateFind(**kwargs):
File "build/bdist.macosx-10.8-intel/egg/atomac/AXClasses.py", line 561, in _generateFind
for needle in self._generateChildren():
File "build/bdist.macosx-10.8-intel/egg/atomac/AXClasses.py", line 507, in _generateChildren
for child in children:
TypeError: 'NoneType' object is not iterable

It appears that little snitch doesn't have a AXMenubar child of AXApplication, whereas all other menubar apps do

No support fot AXSplitGroup

Unable to find elements under this group. Could you please let when how to access fields under this group.

-AXWindow
-AXSplitGroup
-AXTextField
-AXTextField: AXSecureTextField

Function keys don't work

When attempting to send a function key (i.e. F2) via sendKey(), atomac crashes with the error:

Traceback (most recent call last):
  File "PPMidiController.py", line 71, in <module>
    main()
  File "PPMidiController.py", line 55, in main
    print_message(m, textSlider, bgSlider, pp)
  File "PPMidiController.py", line 29, in print_message
    app.sendKey("F2")
  File "build/bdist.macosx-10.7-intel/egg/atomac/AXClasses.py", line 793, in sendKey
  File "build/bdist.macosx-10.7-intel/egg/atomac/AXClasses.py", line 241, in _sendKey
  File "build/bdist.macosx-10.7-intel/egg/atomac/AXClasses.py", line 201, in _addKeyToQueue
  File "build/bdist.macosx-10.7-intel/egg/atomac/AXClasses.py", line 334, in _sendKeyWithModifiers
ValueError: Please provide only one character to send

This appears to be because the modifiers for the function key constants are uppercase: since they are uppercase, Atomac changes them to lowercase and attempts to send the string with the shift modifier key pressed. This fails, because the lowercase version of the constant is not in the keymap.

This is easily fixed; a patch changing the function key constant to match the rest of the key constants (lowercase, surrounded in angle brackets) is forthcoming.

Observer code not terribly thread safe

There may be some crashes when starting an observer on a thread. This needs to be investigated. We're using PyGILState_Ensure for calling Python code in a couple of places - I don't think that's correct. THe cfrunloop may need to be wrapped in GIL code perhaps? Need to do a lot of research here.

No 'activatetext' method in LDTP ?

I run atomac on Mac OS 10.6 and I want to launch a web browser and then input the url in the location field, then open the page.

I use the ldtp like this: 'from atomac.ldtp import *'.Firstly I launch the web browser,then I use the method 'settextvalue' to set the url in the location field. At last, as the LDTP API described, it should has the method: 'activatetext' to activate the url,but it prompts the error: name 'activatetext' is not defined. So what's going on with that, if I can't use this API, is there any other way to implement what I wanna do?

SOS!

Some key combo doesn't work

test in an instance of ldtpd.Core

test.generatekeyevent('<command_l>') # Not working
test.keypress('<shift_l>') # Not working
test.generatekeyevent('abc') # Caps lock not working
test.keyrelease('<shift_l>') # Not working

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.