Selenium上传文件总的来说有两种方法:
1.通过input元素send_keys发送路径
2.通过第三方库模拟键盘鼠标操作拖动文件或者点击按钮复制粘贴文件路径进行上传
方法2是下下策,不做赘述。
我在编写一个阿里巴巴国际站批量发布程序时遇到一个情况,通过input元素send_keys总是报错。
研究了一下发现是由于input元素的 display 为none引起的。
Selenium无法与以下元素交互:
元素不可见、元素宽高为0、元素被其他元素遮挡
一般来说上传控件都会让它不显示,自己再写一个样式套在上面,这样就导致Selenium无法操作。
解决办法是另外定义一段让该元素显示的js代码,然后用driver.execute_script()方法执行js之后再去操作。