win21api、win32gui、win32con三个模块操作系统窗口时一些小技巧
下面这段脚本是操作一个浏览器上弹窗,打开文件窗口,由于脚本 执行速度快,当时未添加第2行的延时时,脚本顺利的执行成功,但弹的窗却没有进行操作,建议后续如果脚本执行到打开弹窗时,延时个几秒再去操作所弹窗,这样就容易成功
1 driver.find_element_by_xpath('//*[@id="uploadWithProgress"]').click() 2 time.sleep(5) 3 # 选择版本 4 try: 5 dialog = win32gui.FindWindow('#32770', u'打开') 6 ComboxEx = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) 7 Combox = win32gui.FindWindowEx(ComboxEx, 0, 'ComboBox', None) 8 Edit = win32gui.FindWindowEx(Combox, 0, 'Edit', None) 9 button = win32gui.FindWindowEx(dialog, 0, 'Button', None) 10 time.sleep(3) 11 if method == "up": 12 win32api.SendMessage(Edit, win32con.WM_SETTEXT, None, newVer) 13 else: 14 win32api.SendMessage(Edit, win32con.WM_SETTEXT, None, oldVer) 15 time.sleep(1) 16 win32api.SendMessage(dialog, win32con.WM_COMMAND, 1, button) 17 except Exception as e: 18 self.log.debug(3) 19 time.sleep(2)
下一篇将介绍上面脚本中第5行中的win32gui.FindWindow()方法中参数的获取方法