上传文件后如何清除/重置输入[type=file]?

How to clear / reset input[type=file] after uploading a file?

上传文件后,它保留在输入中。如果上传第二个文件,第一个文件是 "sticking" 到输入并且将再次上传 - 与当前文件一起。如何重置/清除 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]',

我不确定,但您可以尝试使用 ID 而不是 @fileUpload。尝试 .execute 而不是 clearValuehttps://nightwatchjs.org/api/execute.html

<input type="file" id="something" />
.execute(function() {
  document.getElementById("something").value = ''
})