上传文件后,它仍保留在输入中。如果上传了第二个文件,则第一个文件“粘贴”到输入中,并且将与当前文件一起再次上传。如何重置/清除nightwatch.js中的输入?
我试图清除输入.clearValue('@fileUpload')
,并试图设置一个空值.setValue('@fileUpload', '')
。不幸的是,两者都没有起作用。
我正在使用页面对象,这就是我上传文件的方式:
sectionMediaContent.setValue('@fileUpload', require('path').resolve(__dirname + '/../../../../etc/upload/audioMedium/01_audioMedium_MP3_L-0.02Min_B-40kBits_C-Mono_SR-22.05kHz_S-10.5KB.mp3'));
使用环境:
chromedriver: "76.0.1"
nightwatch: "1.2.2"
感谢您的帮助,如果需要更多信息,请告诉我。
这里有一个测试用例:
'Upload and check audio media files': function (browser) {
const pageLogin = browser.page.login();
const sectionLogin = pageLogin.section.login;
const pageNodes = browser.page.nodes();
const sectionNodesTree = pageNodes.section.tree;
const pageMedia = browser.page.media();
const sectionMediaContent = pageMedia.section.content;
// Select media pool of root
sectionNodesTree
.nodePoolsArePresent('Root')
.selectNode('@nodeMediaPoolOfRoot');
sectionMediaContent.waitForElementVisible('@contentTitle', browser.globals.visibleTimeout)
// Upload audio media file types
sectionMediaContent.setValue('@fileUpload', require('path').resolve(
__dirname + '/../../../../etc/upload/audioMedium/01_audioMedium_MP3_L-0.02Min_B-40kBits_C-Mono_SR-22.05kHz_S-10.5KB.mp3' + '\n' +
__dirname + '/../../../../etc/upload/audioMedium/02_audioMedium_MP3_L-0.02Min_B-40kBits_C-Stereo_SR-22.05kHz_S-10.5KB.mp3'));
// TODO: remove this workaround / reload page to reset input type file
browser.pause(1000);
browser.refresh();
sectionNodesTree
.waitForElementPresent('@nodeMediaPoolOfRoot')
.selectNode('@nodeMediaPoolOfRoot');
sectionMediaContent.waitForElementVisible('@contentTitle');
// Check uploaded media file types in media table
sectionMediaContent.checkMediumTable('@media1Row', {
type: 'Audio',
title: '01_audioMedium_MP3_L-0.02Min_B-40kBits_C-Mono_SR-22.05kHz_S-10.5KB',
});
sectionMediaContent.checkMediumTable('@media2Row', {
type: 'Audio',
title: '02_audioMedium_MP3_L-0.02Min_B-40kBits_C-Stereo_SR-22.05kHz_S-10.5KB',
});
// Check uploaded audio media file type details
sectionMediaContent.checkMedium('@media1Row', {
type: 'Audio',
title: '01_audioMedium_MP3_L-0.02Min_B-40kBits_C-Mono_SR-22.05kHz_S-10.5KB',
fileName: '01_audioMedium_MP3_L-0.02Min_B-40kBits_C-Mono_SR-22.05kHz_S-10.5KB.mp3',
fileType: 'MP3 Audio',
fileSize: '10,57 KB',
audioLength: '00:02 Min.',
audioChannels: 'Mono',
audioSampleRate: '22,05 kHz',
audioBitRate: '40,00 KBit/s',
});
sectionMediaContent.checkMedium('@media2Row', {
type: 'Audio',
title: '02_audioMedium_MP3_L-0.02Min_B-40kBits_C-Stereo_SR-22.05kHz_S-10.5KB',
fileName: '02_audioMedium_MP3_L-0.02Min_B-40kBits_C-Stereo_SR-22.05kHz_S-10.5KB.mp3',
fileType: 'MP3 Audio',
fileSize: '10,57 KB',
audioLength: '00:02 Min.',
audioChannels: 'Stereo',
audioSampleRate: '22,05 kHz',
audioBitRate: '40,00 KBit/s',
});
},
这是页面对象之外的代码段
// Media file upload
fileUpload: 'input[type=file]',
答案 0 :(得分:0)
我不确定,但是您可以尝试使用ID而不是@fileUpload
来尝试。尝试使用.execute
代替clearValue
。
https://nightwatchjs.org/api/execute.html
<input type="file" id="something" />
.execute(function() {
document.getElementById("something").value = ''
})