python pywinauto点击控件

pywinauto点击发件扫描,如何实现,发件扫描需要先点击开单管理才能看到

img

可以模拟键盘按键实现,展开树状控件对应的键盘操作是按下小键盘的+号,你代码控制照着模拟即可。

回答引自chatgpt
请确保将"your_application.exe"和"主窗口标题"替换为你实际使用的应用程序的可执行文件路径和主窗口标题。

这段代码将启动应用程序,连接到主窗口,然后依次点击"开单管理"和"发件扫描"按钮。请根据你的实际情况修改代码中的窗口标题和按钮标题

from pywinauto import Application

# 启动应用程序
app = Application().start("your_application.exe")  # 替换为你的应用程序的可执行文件路径

# 连接到主窗口
main_window = app["主窗口标题"]  # 替换为你的应用程序的主窗口标题

# 点击"开单管理"按钮
main_window.child_window(title="开单管理").click()

# 点击"发件扫描"按钮
main_window.child_window(title="发件扫描").click()

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7546537
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:pywinauto
  • 除此之外, 这篇博客: python自动化框架:pywinauto实现博客之星自动化评论中的 如何使用pywinauto 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    先附上官方文档

    在我们的实践中,主要使用到了

    import time
    from pywinauto import keyboard
    from pywinauto import mouse
    from pywinauto import Application
    

    keyboard用来模拟键盘输入以及滚动条
    mouse用来模拟鼠标点击
    application主要用来唤醒浏览器

    先附上主要代码

    import time
    from pywinauto import keyboard
    from pywinauto import mouse
    from pywinauto import Application
    
    def sendMsg(topicNum):
        print("topicNum"+str(topicNum))
    
        keyboard.send_keys('^T')
        time.sleep(3)
    
        keyboard.send_keys("https://bbs.csdn.net/topics/"+str(topicNum))
        keyboard.send_keys('{VK_RETURN}')
        time.sleep(10)
    
    
        keyboard.send_keys('{VK_SPACE}')
        time.sleep(3)
    
        mouse.click(coords=(1180, 1010))
        time.sleep(3)
    
        keyboard.send_keys('# d求个五星回评 ')
        keyboard.send_keys('{ENTER}')
        keyboard.send_keys("链接直达:[](https://bbs.csdn.net/topics/603958738)")
        keyboard.send_keys('{ENTER}')
        keyboard.send_keys("**私信自动源码**")
        keyboard.send_keys('^{ENTER}')
        time.sleep(3)
    
        mouse.click(coords=(1180, 200))
        fun(num+1)
        print("end ")
    
    #使用后端方式打开浏览器
    app = Application(backend="uia").start("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
    
    time.sleep(3)
    
    #开发打开其他博主的链接
    sendMsg(topicNum)
    

    topicNum是其他博主的互动区id,这里建议先获取参与这次评选的用户列表,再次提示,我们只做有限的评论,不要随意爬取随意评论给官方制造麻烦,可以看到其他玩家用爬虫死命得到处评论还多次评论,说明其代码并没有做好控制,只是为了发而发。

    可以看到代码中会有很多的sleep,这是因为鼠标信号跟键盘信号 与 页面渲染会有时间差。如果页面还没渲染好就进行点击等操作只会操作失败。

    框架比较差的点在于没有判断鼠标及键盘操作的结果是否符合。

  • 以下回答来自chatgpt:

    根据参考资料中的代码,结合问题描述,可以使用pywinauto库实现点击控件的操作。首先需要找到对应的窗口和控件的句柄,然后通过点击句柄来模拟点击操作。

    具体的解决方案如下: 1. 导入所需的库:

    import pywinauto
    from pywinauto import findwindows, findbestmatch
    from pywinauto import application
    
    1. 通过窗口标题找到窗口句柄:
    window_title = "应用程序的窗口标题" # 将窗口标题替换为实际的窗口标题
    hwnd = findwindows.find_windows(title_re=window_title)[0]
    
    1. 通过控件名找到控件句柄:
    window = findbestmatch.top_window() # 根据hwnd获取窗口对象
    control_name = "控件的名称" # 将控件名称替换为实际的控件名称
    control = window.child_window(title=control_name)
    control_hwnd = control.handle
    
    1. 实现点击操作:
    control.click()
    
    1. 完整代码示例:
    import pywinauto
    from pywinauto import findwindows, findbestmatch
    from pywinauto import application
    
    # 根据窗口标题找到窗口句柄
    window_title = "应用程序的窗口标题" # 将窗口标题替换为实际的窗口标题
    hwnd = findwindows.find_windows(title_re=window_title)[0]
    
    # 根据控件名找到控件句柄
    window = findbestmatch.top_window() # 根据hwnd获取窗口对象
    control_name = "控件的名称" # 将控件名称替换为实际的控件名称
    control = window.child_window(title=control_name)
    control_hwnd = control.handle
    
    # 点击控件
    control.click()
    

    请将上述代码中的 "应用程序的窗口标题" 和 "控件的名称" 替换为实际的窗口标题和控件名称。

    希望这个解决方案能帮到你!如果有任何问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^