目录
1、上传文件使用包及对比
2、pyautogui安装(mac)及常用语法
3、mac下文件上传实践
4、遇到的问题
1、上传文件使用包及对比
常见的python支持的文件上传功能有win32gui,pyautogui,pywinauto 库,其中他们的对比如下表:遇到跨平台时,使用pyautogui来实现;无平台限制均可选择;其他个性化如截图或者PC应用对应选择支持的库。
2、pyautogui安装及常用语法
2.1 pyautogui安装
2.1.1下载pyautogui离线包
2.1.2依赖包安装顺序
①pyobjc-core
②pyobjc-framework-Quartz
③pyautogui
结合anaconda环境来安装离线包(https://www.jianshu.com/p/34760f355113?v=1667898666160 )
xxx@xxx-MacBook-Pro PyAutoGUI-0.9.33 % cd /Users/xxx/Downloads/PyAutoGUI-0.9.33/
xxx@xxx-MacBook-Pro PyAutoGUI-0.9.33 % python setup.py install
2.2 pyautogui常用语法
'''鼠标操作'''
pyautogui.scroll(-10) #它只接受一个整数,值为正则往上滚,值为负则往下滚
pyautogui.click(100,100) #点击具体坐标
------------'''鼠标操作坐标获取'''----------------------
import time, os
import pyautogui as pag
try:
while True:
#print('Press Ctrl-C to end')
x, y = pag.position() #返回鼠标的坐标
print('Position : (%s, %s)' % (x, y)) # 打印坐标
time.sleep(1) #每个1s中打印一次 , 并执行清屏
os.system('cls') #执行系统清屏指令
except KeyboardInterrupt:
print('end')
--------------------------------------------------------
pyautogui.click(button='right') #右击
pyautogui.doubleClick() #双击
pyautogui.moveTo(100,200,2) #移动,持续2s完成
pyautogui.dragTo(300, 400, 2, button='left') #拖拽
##################################################################
'''键盘操作'''
pyautogui.press('enter') # 按下并松开(轻敲)回车键
pyautogui.keyDown('shift') # 按下`shift`键
pyautogui.keyUp('shift') # 松开`shift`键
pyautogui.hotkey('ctrl', 'v') #ctrl+v
pyautogui.typewrite('Hello world!', interval=0.2) # 每次输入间隔0.2秒,输入Hello world!
#################################################################
'''其他'''
screenWidth, screenHeight = pyautogui.size() # 屏幕尺寸
mouseX, mouseY = pyautogui.position() # 返回当前鼠标位置,注意坐标系统中左上方是(0, 0)
pyautogui.PAUSE = 1.5 # 每个函数执行后停顿1.5秒
pyautogui.screenshot('my_screenshot.png')
3、mac下文件上传实践
3.1 页面元素及实现方式
需要满足的点:
-WEB后台
-UI自动化需要在mac、win上支持
-前端通过button标签调起系统输入框,无法使用sendkeys()输入路径
最终选择pyautogui来实现
3.2 代码
def uploadgui(self, filename):
'''通过相对路径拼接文件完整路径'''
parentDirectory="cases/Project/data"
pra_path = os.path.abspath(os.curdir)
filePath = os.path.join(pra_path, parentDirectory,filename)
print(filePath)
try:
pyautogui.press('shift')
pyautogui.typewrite(filePath,interval=0.2)
time.sleep(2)
pyautogui.press('enter')
time.sleep(2)
pyautogui.press('enter')
time.sleep(5)
except Exception as e:
logging.log(e)
e.args = ('上传文件操作异常',)
raise e
else:
return filePath
4、遇到的问题
4.1 mac传入的文件路径缺失
错误路径(缺失开头):正确路径:finder内输入应该能指定到文件
原因:因为中文输入法导致,需要切换成英文
pyautogui.press('shift')
4.2 mac传入的文件路径找不到
原因:typewrite()本身不支持中文,路径改为英文即可