目的:
在操作当前应用后,弹出一个系统弹窗,想定位到这个弹窗
方法一(没搞定,期待大佬解答):
想到atomac有个获取当前最前端的应用程序的方法getFrontmostApp
a = atomac.getFrontmostApp
print(a)
返回
<bound method BaseAXUIElement.getFrontmostApp of <class 'atomac.AXClasses.NativeUIElement'>>
没走到方法里去?所以根据返回改成
a = atomac.AXClasses.BaseAXUIElement.getFrontmostApp()
print(a)
报错了
Traceback (most recent call last):
File "test01.py", line 125, in <module>
a = atomac.AXClasses.BaseAXUIElement.getFrontmostApp()
File "/Users/mia_wang/Library/Python/3.8/lib/python/site-packages/atomac/AXClasses.py", line 105, in getFrontmostApp
if ref.AXFrontmost:
File "/Users/mia_wang/Library/Python/3.8/lib/python/site-packages/atomac/AXClasses.py", line 826, in __getattr__
attr = self._getAttribute(name)
File "/Users/mia_wang/Library/Python/3.8/lib/python/site-packages/atomac/_a11y.py", line 217, in _getAttribute
_setError(err, 'Error retrieving attribute')
File "/Users/mia_wang/Library/Python/3.8/lib/python/site-packages/atomac/_a11y.py", line 75, in _setError
raise error_mapping[error_code](msg)
KeyError: -25201
报错 -25201,但是进入如下方法看,并没有 -25201这个错误
def _setError(error_code, error_message):
error_mapping = {
kAXErrorAttributeUnsupported: ErrorUnsupported, # -25205
kAXErrorActionUnsupported: ErrorUnsupported, # -25206
kAXErrorNotificationUnsupported: ErrorUnsupported, # -25207
kAXErrorAPIDisabled: ErrorAPIDisabled, # -25211
kAXErrorInvalidUIElement: ErrorInvalidUIElement, # -25202
kAXErrorCannotComplete: ErrorCannotComplete, # -25204
kAXErrorNotImplemented: ErrorNotImplemented, # -25208
}
msg = '{} (AX Error {})'.format(error_message, error_code)
raise error_mapping[error_code](msg)
方法二:
根据Accessibility Inspector 知道这个应用程序的名字
根据_getRunningApps方法,打印出所有的应用程序,再根据关键字查到当前应用程序的bundleId
import atomac
a = atomac.AXClasses.BaseAXUIElement._getRunningApps()
print(a)
根据
atomac.getAppRefByBundleId('com.apple.SecurityAgent')
就定位到这个弹窗了