这是我的代码,它将打开窗口并将密钥发送到窗口,但有些屏幕不起作用
from pywinauto.application import *
import time
app=Application.Start("Application.exe")
app.window_(title="Application")
time.sleep(1)
app.top_window_().TypeKeys("{TAB 2}")
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用waituntilpassesinpywinauto给应用程序时间打开一个新窗口。我已经使用 SWAPY 来识别窗口细节。
为了测试,我手动打开子窗口,所以WaitUntilPasses应该立即看到这个,但它没有。
语法显示正常,因为我可以找到并打印 的输出find_windows,如下所示:
xx = pywinauto.findwindows.find_windows(
title=u'Choose template', class_name='#32770')[0]
print (xx)
Run Code Online (Sandbox Code Playgroud)
这给出了 789646 的响应
但是在我的 WaitUntilPasses 命令中:
pywinauto.timings.WaitUntilPasses(
20, 0.5,
(pywinauto.findwindows.find_windows(
title=u'Choose template', class_name='#32770')[0]
)
)
Run Code Online (Sandbox Code Playgroud)
它总是超时。我看不到语法问题,并尝试了我能想到的所有排列。任何提示将非常感谢。
我正在使用pywinauto自动化点击DiffDaff软件上的一些按钮.
我的意图是:
第1步:打开DiffDaff软件
第2步:单击"关于"按钮
from pywinauto.application import Application
app = Application.start("C:\Program Files\DiffDaff\DiffDaff.exe")
app.About.Click()
Run Code Online (Sandbox Code Playgroud)但是,我陷入了第2步,控制台显示错误:
File "build\bdist.win32\egg\pywinauto\application.py", line 238, in __getattr__
File "build\bdist.win32\egg\pywinauto\application.py", line 788, in _resolve_control
pywinauto.findbestmatch.MatchError: Could not find 'About' in '['', u'DiffDaff - Compare Files, Folders And Web Pages', u'Internet Explorer_Hidden', u'DiffDaff - Compare Files, Folders And Web PagesDialog', 'Dialog']'
Run Code Online (Sandbox Code Playgroud)
哪里,'',u'DiffDaff-比较文件,文件夹和网页',u'Internet Explorer_Hidden',u'DiffDaff-比较文件,文件夹和网页对话','对话'是sotfware的标题
另外,使用命令'app.dialogs.print_control_identifiers()'知道"关于"按钮的确切位置,有输出:
Button - '&About' (L750, T388, R834, B411)
'&About' '&AboutButton' 'Button3'
Run Code Online (Sandbox Code Playgroud)
但是很难理解上面的参数(L750,T388,......的内容/位置) - 你想解释上面所有参数的平均值吗?
以及执行"点击"按钮的方式?
谢谢.
如何从ms计算器文本字段中获取结果,该字段显示任何数学运算的结果?Swapy(v.0.4.3)告诉我这个文本字段的值为'Static2',运行这么简单的脚本后我得到空列表.这是我的代码:
from pywinauto import *
n=[]
app=Application()
app.start_("calc.exe")
app.calc.Button11.ClickInput()
app.calc.Button20.ClickInput()
app.calc.Button11.ClickInput()
app.calc.Button21.ClickInput()
n=app.calc.Static2.Texts()#here i expected to get the number
print n
Run Code Online (Sandbox Code Playgroud)
我哪里做错了?
我从博客(http://technapstar.blogspot.fi/2014/07/automation-with-pywinauto.html)中了解到关于启动谷歌浏览器并通过 pywinauto 输入网址的方法如下:
Python 3.6.1rc1 (v3.6.1rc1^0:e0fbe5feee4f9c00f09eb9659c2182183036261a, Mar 4 2017, 20:00:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import pywinauto
>>> pywinauto.__version__
'0.6.2'
>>> from pywinauto.application import Application
>>> app = Application().start("chrome.exe")
Warning (from warnings module):
File "D:\Python\lib\site-packages\pywinauto\application.py", line 982
UserWarning)
UserWarning: 32-bit application should be automated using 32-bit Python (you use 64-bit Python)
>>> app.window_(title='New Tab')
<pywinauto.application.WindowSpecification object at 0x0000000002FFABE0>
>>> app.window_().TypeKeys('{F6}')
<pywinauto.controls.hwndwrapper.DialogWrapper object at 0x0000000004258320>
>>> app.window_().TypeKeys('{ESC}')
<pywinauto.controls.hwndwrapper.DialogWrapper …Run Code Online (Sandbox Code Playgroud) 如果我创建一个线程,它所做的就是连接到某个进程并获得它的顶部窗口,那么程序就会挂起.
我调试了一下它似乎陷入了comtypes._compointer_base.from_params.这是整个追溯:
...
-> self.top_win = self.app.top_window()
c:\python27\lib\site-packages\pywinauto\application.py(1095)top_window()
-> backend=self.backend.name)
c:\python27\lib\site-packages\pywinauto\findwindows.py(197)find_elements()
-> cache_enable=True)
c:\python27\lib\site-packages\pywinauto\uia_element_info.py(272)children()
-> return self._get_elements(IUIA().tree_scope["children"], cond, cache_enable)
c:\python27\lib\site-packages\pywinauto\uia_element_info.py(261)_get_elements()
-> ptrs_array = self._element.FindAll(tree_scope, cond)
> c:\python27\lib\site-packages\comtypes\__init__.py(970)from_param()
-> return value
Run Code Online (Sandbox Code Playgroud)
在pdb中键入步骤后,它显示此然后冻结:
(Pdb) s
--Return--
> c:\python27\lib\site-packages\comtypes\__init__.py(970)from_param()-><POINTER... 41308a0>
-> return value
Run Code Online (Sandbox Code Playgroud)
似乎问题是在线程中使用comtypes,我试图在调用线程(也在main)中调用pythoncom.CoInitialize(),但它没有帮助.
这可以做什么?
谢谢.
我有一个kivy应用程序,可以使用pywinauto模块与其他窗口进行交互。该应用程序在Linux(未使用pywinauto)上运行良好,但是在Windows中,我收到以下错误消息,该应用程序甚至无法启动:
C:\Program Files (x86)\Python36_64\lib\site-packages\pywinauto\__init__.py:80: UserWarning: Revert to STA COM threading mode
warnings.warn("Revert to STA COM threading mode", UserWarning)
[INFO ] [GL ] NPOT texture support is available
[INFO ] [Base ] Start application main loop
Traceback (most recent call last):
File ".\application.py", line 368, in <module>
Application().run()
File "C:\Program Files (x86)\Python36_64\lib\site-packages\kivy\app.py", line 826, in run
runTouchApp()
File "C:\Program Files (x86)\Python36_64\lib\site-packages\kivy\base.py", line 477, in runTouchApp
EventLoop.start()
File "C:\Program Files (x86)\Python36_64\lib\site-packages\kivy\base.py", line 164, in start
provider.start()
File "C:\Program Files (x86)\Python36_64\lib\site-packages\kivy\input\providers\wm_touch.py", line 68, …Run Code Online (Sandbox Code Playgroud) from pywinauto import application
app = application.Application.start("C:\\Program Files\\Microsoft Office\\Office12\\EXCEL.exe")
app.Microsoft_Excel.TypeKeys('%a')
Run Code Online (Sandbox Code Playgroud)
%a = Alt+a
我想要Ctrl+ a.有迹象吗?
使用以下代码,我可以找到要连接的当前正在运行的窗口名为“ Trade Monitor”,我如何成功连接到该窗口?使用app.start_方法不起作用。
from pywinauto import application
app=application.Application
app.findwindows #prints all windows running on machine
app.window("Trade Monitor") #error
Run Code Online (Sandbox Code Playgroud) 安装 pywinauto 后,我尝试运行这个简单的代码:
from pywinauto import Application
filename = 'notepad.exe'
app = aplication.Application().start(filename)
Run Code Online (Sandbox Code Playgroud)
并得到错误:
Traceback (most recent call last):
File "D:\auto\retr\test.py", line 1, in <module>
from pywinauto import Application
File "D:\Users\222\AppData\Local\Programs\Python\Python39\lib\site-packages\pywinauto\__init__.py", line 89, in <module>
from . import findwindows
File "D:\Users\222\AppData\Local\Programs\Python\Python39\lib\site-packages\pywinauto\findwindows.py", line 42, in <module>
from . import controls
File "D:\Users\222\AppData\Local\Programs\Python\Python39\lib\site-packages\pywinauto\controls\__init__.py", line 36, in <module>
from . import uiawrapper # register "uia" back-end (at the end of uiawrapper module)
File "D:\Users\222\AppData\Local\Programs\Python\Python39\lib\site-packages\pywinauto\controls\uiawrapper.py", line 42, in <module>
from .. import backend
File …Run Code Online (Sandbox Code Playgroud) pywinauto ×10
python ×8
python-2.7 ×2
com ×1
com-object ×1
comtypes ×1
ctypes ×1
excel ×1
kivy ×1
windows ×1