使用Selenium JavaScript上传图片

时间:2018-08-10 05:06:38

标签: javascript selenium

我想创建自动使用selenium上传图片的图片

使用此脚本

driver.findElement(By.id(`avatar-upload`)).sendKeys(`/home/user/Desktop/smg935-0hero-0930.jpeg`)

返回

ElementNotInteractableError: Element <input id="avatar-upload" type="file"> is not reachable by keyboard

enter image description here

1 个答案:

答案 0 :(得分:1)

由于该元素不可见,因此您无法通过UI与sendKeys之类的元素进行交互。一种方法是通过调用HTML DOM API

以后台方式更改element属性
let upload_ele = driver.findElement(By.id('avatar-upload'))
let file_path = '/home/user/Desktop/smg935-0hero-0930.jpeg'

driver.executeScript('return arguments[0].value=arguments[1];', upload_ele, file_path)

此方法有一个缺点,因为它在后台运行,因此不会 触发绑定到元素的键/鼠标事件。如果上载小部件侦听关键事件以检测用户是否选择了文件,则在用户可以继续之前,请单击上载按钮。在这种情况下,背景方法将行不通。