首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让pywinauto单击按钮

无法让pywinauto单击按钮
EN

Stack Overflow用户
提问于 2020-12-27 12:13:36
回答 1查看 420关注 0票数 1

我正在尝试使用pywinauto来运行大量向现有应用程序添加项目的exe文件。exe文件按预期启动,并出现感兴趣的对话框(如下所示),但我无法单击对话框中的“下一步”按钮。看起来pywinauto找不到“下一步”按钮。一个想法如何让他的工作?下面是我的代码:

代码语言:javascript
复制
import time
import pywinauto


def do_installs():
    app = pywinauto.application.Application()
    app.start("You're_a_Hoot_Brushes-(lrd)_windows.exe")

    # setup wizard starts
    # a "Setup" windows appears with a `Next >" button that I want to click

    time.sleep(10)  # excessive wait for Setup dialog

    dlg = app['Setup']
    print('dlg:')
    dlg.print_control_identifiers()
    dlg['Next'].click()


if __name__ == '__main__':
    do_installs()

以下是输出日志:

代码语言:javascript
复制
C:\Users\John\AppData\Local\Programs\Python\Python38-32\python.exe C:/Users/John/PycharmProjects/installMM_downloads/main.py
dlg:
Control Identifiers:

SunAwtFrame - 'Setup'    (L710, T345, R1210, B735)
['Setup', 'SunAwtFrame', 'SetupSunAwtFrame']
child_window(title="Setup", class_name="SunAwtFrame")
Traceback (most recent call last):
  File "C:\Users\John\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pywinauto\application.py", line 250, in __resolve_control
    ctrl = wait_until_passes(
  File "C:\Users\John\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pywinauto\timings.py", line 458, in wait_until_passes
    raise err
pywinauto.timings.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/John/PycharmProjects/installMM_downloads/main.py", line 22, in <module>
    do_installs()
  File "C:/Users/John/PycharmProjects/installMM_downloads/main.py", line 18, in do_installs
    dlg['Next'].click()
  File "C:\Users\John\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pywinauto\application.py", line 379, in __getattribute__
    ctrls = self.__resolve_control(self.criteria)
  File "C:\Users\John\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pywinauto\application.py", line 261, in __resolve_control
    raise e.original_exception
  File "C:\Users\John\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pywinauto\timings.py", line 436, in wait_until_passes
    func_val = func(*args, **kwargs)
  File "C:\Users\John\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pywinauto\application.py", line 222, in __get_ctrl
    ctrl = self.backend.generic_wrapper_class(findwindows.find_element(**ctrl_criteria))
  File "C:\Users\John\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pywinauto\findwindows.py", line 87, in find_element
    raise ElementNotFoundError(kwargs)
pywinauto.findwindows.ElementNotFoundError: {'best_match': 'Next', 'top_level_only': False, 'parent': <win32_element_info.HwndElementInfo - 'Setup', SunAwtFrame, 2490776>, 'backend': 'win32'}

Process finished with exit code 1

下面是我想点击的带有“下一步”的对话框:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-29 03:44:08

解决方案是不要试图找到按钮。

我可以通过使用以下命令来做我想做的事情:

代码语言:javascript
复制
keyboard.send_keys('{ENTER}')

当所需的选择被选中时,按enter键,就像我发布的对话框一样。和:

代码语言:javascript
复制
dlg.click_input(coords=(x, y))

在其他情况下,在指定坐标(相对于对话框,dlg)处单击鼠标。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65462801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档