我正在使用 Webdriver.io 和 mocha 在 CoffeeScript 上编写测试。代码使用 CoffeeScript 编译器进行处理。
在此过程中,我需要使用 input type = "file" (display: none) 元素将文件上传到服务器。
我尝试如下传输文件地址(当然,首先使其可见:style.display = 'block'):
elem_input = $('div.class_1 input.class_2')
browser.elementSendKeys(elem_input.elementId, '/home/user/ ... /test.txt')
找不到文件,控制台出现错误信息“找不到文件”。
我仔细检查了路径,是正确的。如果直接通过界面手动上传文件,也没有问题。
造成这种情况的原因是什么以及解决问题的方法是什么?
我有类似的问题,对我来说 setValue() 显示错误:元素不可交互 并且 addValue() 有效。
const filepath = path.join(process.cwd(),'path/to/file');
const input = await $("//input[@type='file']")
const remoteFilePath = await browser.uploadFile(filepath)
await input.addValue(remoteFilePath)
file_path = browser.uploadFile(FILE_PATH)
# Путь к загружаемому файлу на устройстве
$('div.my_selector').setValue(file_path)
您想在 input[] 元素上使用
addValue
。我的理解是, setValue
在添加新值(通常在字符串上下文中)之前首先清除现有值,而 addValue
只是直接添加值,并且由于输入类型是文件,所以没有要从输入字段中清除的值,您可以从 :element not interactable
得到 setValue
。
尝试一下,如果有效请告诉我!