Webdriver io,使用input type=“file”上传文件

问题描述 投票:0回答:3

我正在使用 Webdriver.iomochaCoffeeScript 上编写测试。代码使用 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')

找不到文件,控制台出现错误信息“找不到文件”。

我仔细检查了路径,是正确的。如果直接通过界面手动上传文件,也没有问题。

造成这种情况的原因是什么以及解决问题的方法是什么?

javascript input coffeescript webdriver-io
3个回答
1
投票

我有类似的问题,对我来说 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)

0
投票
file_path = browser.uploadFile(FILE_PATH)
# Путь к загружаемому файлу на устройстве
$('div.my_selector').setValue(file_path)

0
投票

您想在 input[] 元素上使用

addValue
。我的理解是,
setValue
在添加新值(通常在字符串上下文中)之前首先清除现有值,而
addValue
只是直接添加值,并且由于输入类型是文件,所以没有要从输入字段中清除的值,您可以从
:element not interactable
得到
setValue

尝试一下,如果有效请告诉我!

© www.soinside.com 2019 - 2024. All rights reserved.