python+selenium自动化之文件上传、弹框处理
1.当可以定位到input标签的时候
2.当定位不到input标签的时候
可以使用selenium之外的方法,目前不知道是否是最优解,但是这种可以实现,实现方法代码如下:
from pykeyboard import PyKeyboard def upload_picture(self, file): # self.click(self.salon_banner_loc) k = PyKeyboard() m = PyMouse() filepath = '/' k.press_keys(['Command', 'Shift', 'G']) x_dim, y_dim = m.screen_size() m.click(x_dim // 2, y_dim // 2, 1) # 复制文件路径开头的斜杠/ pyperclip.copy(filepath) # 粘贴斜杠/ k.press_keys(['Command', 'V']) # 输入文件全路径进去 k.type_string(file) k.press_key('Return') time.sleep(2) k.press_key('Return') time.sleep(2) k.press_key('Return')
3.弹框处理机制
将小方块拖到另一个小方块上,这时候弹出一个弹窗,点击弹窗的【确定】按钮,弹窗消失
4.toast提示
web页面中的toast提示,一般是存在于登录错误、操作非法的时候,一个停留在页面1、2s的小提示,所以很难定位到这种元素,如何让toast在页面中停留的时间长一点呢?以chrome浏览器为例
可以打开web浏览器中的控制台,在控制台下方,有一个setting,点击setting

当toast提示出来的时候,点击Disable JavaScript按钮,就可以使toast提示一直停留在当前页面(注意:一定是先点击等toast提示出来后再选择Disable JavaScript)
我这里遇到一个坑:红框中的id名称后面的数字是一直在变的,每点击一次加1,toast提示元素id一直变化中,因此在这里使用id去定位,会导致元素找不到,因此实际场景中,一定要注意这个问题⚠️