标签: pywinauto

如何使用Python在SendKey和PywinAuto模块中发送TAB按钮

这是我的代码,它将打开窗口并将密钥发送到窗口,但有些屏幕不起作用

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)

python pywinauto

5
推荐指数
1
解决办法
9371
查看次数

等待应用程序窗口:Python 中的 pywinauto.timings.WaitUntilPasses

我正在尝试使用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)

它总是超时。我看不到语法问题,并尝试了我能想到的所有排列。任何提示将非常感谢。

python pywinauto

5
推荐指数
1
解决办法
3244
查看次数

如何通过pywinauto对Button或Text字段执行Click操作

我正在使用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,......的内容/位置) - 你想解释上面所有参数的平均值吗?

以及执行"点击"按钮的方式?

谢谢.

pywinauto

5
推荐指数
1
解决办法
1万
查看次数

从文本字段使用pywinauto获取价值

如何从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)

我哪里做错了?

pywinauto python-2.7

5
推荐指数
1
解决办法
4607
查看次数

启动谷歌浏览器并通过pywinauto输入网址的最佳方法是什么

我从博客(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)

python pywinauto

5
推荐指数
1
解决办法
5830
查看次数

使用pywinauto.top_window()与线程一起使用时会挂起

如果我创建一个线程,它所做的就是连接到某个进程并获得它的顶部窗口,那么程序就会挂起.

我调试了一下它似乎陷入了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(),但它没有帮助.

这可以做什么?

谢谢.

python com multithreading pywinauto comtypes

5
推荐指数
1
解决办法
462
查看次数

与pywinauto一起使用kivy时ctypes.ArgumentError

我有一个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)

python ctypes pywinauto kivy

5
推荐指数
1
解决办法
482
查看次数

如何按<CTRL>

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.有迹象吗?

python excel pywinauto python-2.7

4
推荐指数
1
解决办法
5021
查看次数

使用PyWinAuto来控制当前正在运行的应用程序

使用以下代码,我可以找到要连接的当前正在运行的窗口名为“ 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)

python windows pywinauto com-object

4
推荐指数
1
解决办法
9005
查看次数

无法从 pywinauto 导入:导入错误:导入 win32ui 时 DLL 加载失败:动态链接库 (DLL) 初始化例程失败

安装 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)

python pywinauto

4
推荐指数
1
解决办法
5303
查看次数