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

时间:2019-09-02 15:39:04

标签: nightwatch.js

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

1 个答案:

答案 0 :(得分:0)

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

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