pyautogui 截屏点击,但程序没有加载好,页面没有出来怎么办?除了延时方法

毕设小屋 其他问答 1
#比如自动启动QQ,匹配到密码输入位置,然后点击,输入密码。但是QQ页面没有加载好
import os
import pyautogui
path="D:\Tencent\QQ\Bin\QQScLauncher.exe"
os.startfile(path)
location=pyautogui.locateOnScreen(image='pswd.png')
print(location)
x,y=pyautogui.center(location)
print('center()',x,y)
pyautogui.click(x=x,y=y,clicks=1,button='left')
pyautogui.typewrite("pswd")
#怎样让它循环,直到位置锁定成功?

回复

共2条回复 我来回复
  • 毕设工厂
    这个人很懒,什么都没有留下~
    评论

    通过获取窗口句柄的方式获取qq状态,下面示例程序,程序约在窗口最前面,拿到的句柄越靠前,能拿到句柄,切QQ在最前面,说明已经加载好了,你就可以开始下面操作了,如果没有,则继续循环拿下一次句柄,也可以等待个3,500ms再次获取 获取句柄方式如下

    import win32gui
    
    hwnd_title = {}
    
    
    def get_all_hwnd(hwnd,mouse):
        if (win32gui.IsWindow(hwnd)
                and win32gui.IsWindowEnabled(hwnd)
                and win32gui.IsWindowVisible(hwnd)):
            hwnd_title.update({hwnd:win32gui.GetWindowText(hwnd)})
    
    
    win32gui.EnumWindows(get_all_hwnd,0)
    
    for h,t in hwnd_title.items():
        if t:
            print(h,t)
    
    0条评论
  • 源码码头网
    这个人很懒,什么都没有留下~
    评论

    如果不用延时,可用while循环,结合try/except异常捕获,当没有捕获到图像窗口时,一直循环下去,直到获取。参考下面代码 :

    os.startfile(path)
    while True:
        try:
            location=pyautogui.locateOnScreen(image='pswd.png',confidence=0.7)
            x,y=pyautogui.center(location)
            print('center()',x,y)
            pyautogui.click(x=858,y=596,clicks=1,button='left')
            pyautogui.typewrite("pswd")
            pyautogui.click(x=950,y=668,clicks=1,button='left')
            break
        except:
            continue
    
    0条评论

发表回复

登录后才能评论