赞
踩
在遇到一些特殊的情况的时候,selenium框架已经无法满足我们的需求了,比如:网站做了自动化屏蔽的时候,会检测到selenium并对操作者进行屏蔽。
经过测试发现pywinauto属于电脑的模拟,当然还有其他的库,不过我这里使用的是pywinauto,感觉还是比较好用的
由于一些原因,我的电脑没法完整的安装一个可以检测控件的工具,名字记不清了,只要搜索一下pywinauto或者另外一个依赖控件的库,就可以找到那个工具
所以我采用了下面代码获取鼠标控件的位置
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import time import pyautogui import win32api import win32con from ctypes import windll width, height = pyautogui.size() print("屏幕分辨率:", width, height) # 获取鼠标实时位置 for _ in range(3): x, y = pyautogui.position() print("当前鼠标点击位置:", x, y) time.sleep(1) # 鼠标移动到制定位置 windll.user32.SetCursorPos(22, 250) # 鼠标点击 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 22, 250) time.sleep(0.05) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 22, 250) x, y = pyautogui.position() print("当前鼠标点击位置:", x, y)
然后通过上面的代码可以获取光标,然后通过pywinauto进行自动化操作
补充一个示例:
import time import pywinauto from pywinauto.application import Application # 打开windows上安装的谷歌浏览器,其他浏览器一样OK app_test = Application(backend="uia").start(r"C:\Program Files\Google\Chrome\Application\chrome.exe url网址,需要更改 --ico1") # url网址,需要更改 time.sleep(5) i = 26 while(i>0): pywinauto.mouse.click(coords=(151,224)) # 域名选择 time.sleep(3) pywinauto.mouse.click(coords=(167,263)) # 确定选择 time.sleep(3) pywinauto.mouse.click(coords=(51,908)) # 点击设置 958 time.sleep(3) pywinauto.mouse.click(coords=(1505,909)) # 点击移除 time.sleep(3) pywinauto.mouse.click(coords=(1092,668)) # 确认移除 time.sleep(3) i = i - 1
补充一个在光标位置录入内容的代码
pywinauto.keyboard.send_keys('内容',pause=0.0001) # pause是键盘模拟每个字符录入时间长短
说明一下这里的send_keys是模拟键盘,还有一个是send_text还是key_text的(记不清了)那个是直接录入,没有模拟操作,但是那个是另外一个库的,那个库好像有些限制,比如需要获取控件标题啦,id啦等等要比较精确,所以我这里使用了pywinauto
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。