场景:在使用selenium进行web自动化的时候,遇到了上传文件的用例,点击上传按钮选择需要上传的文件,上传成功后将文件处于服务器的地址返填到前面的输入框
问题:无法通过selenium直接模拟上传文件的操作
分析:因为上传文件的弹窗已经脱离了selenium的管控范围,需要引入三方插件或者三方库来模拟用户选择文件的操作
解决思路:使用AutoIt该工具可以实现windows下的桌面自动化,但是我需要在mac下也能完成文件上传的操作,所以AutoIt不行。最后考虑采用pyautogui这个三方库,模拟键盘操作,整个实现逻辑为:
- 在选择文件窗口输入文件全路径
- 点击回车按钮完成文件选择操作
实现:
在实际操作过程中的问题:
1.不同操作系统按下的快捷键是不同的,比如windows的粘贴是ctrl+v,mac的是command+v
解决:首先获取到操作系统,通过if语句控制不同的操作系统走不同的分支
2.直接调用pyautogui.typewrite()方法键入文件全路径,如果是在中文输入法下有问题
解决:采用复制粘贴的形式实现文件路径的输入。此处又引入了另一个三方库pyperclip,通过调用pyperclip.copy()方法实现将字符串复制到剪贴板然后键入粘贴快捷键
3.上传的文件在不同系统存放的问题
解决&