无法在量角器中使用nodejs删除文件

Unable to delete a file with nodejs in protractor

我正在尝试使用 nodejs fs 删除文件,我注意到文件已经生成,然后尝试删除(删除文件失败),而文件甚至没有使用量角器上传到浏览器。生成和删除文件功能是使用 nodejs fs 创建的。

那么我怎样才能把它们放在一起然后等到文件上传然后删除文件呢?

helper.generateFile(filePath);
helper.uploadFile(UploadButtonElement, filePath);
uploadButtonElm.click();
helper.deleteFile(filePath); 

有没有办法只在以下两个动作完成时才执行deleteFile。

helper.uploadFile(UploadButtonElement, filePath);
uploadButtonElm.click();

谢谢。

Protractor operations schedule promises to do 事情。他们实际上并没有这样做。因此,您的辅助函数将在任何量角器代码实际完成您的要求之前就结束 运行。使用 then 显式链接您的依赖项。像这样:

helper.generateFile(filePath);
helper.uploadFile(UploadButtonElement, filePath);
uploadButtonElm.click().then(function() {
   helper.deleteFile(filePath);
});

请阅读https://github.com/angular/protractor/blob/master/docs/control-flow.md and https://code.google.com/p/selenium/wiki/WebDriverJs#Understanding_the_API

function deleteAlreadyDownloadedFiles(extension,username) {
        let os = require('os');
        console.log('USERNAME HERE IS'+require("os").userInfo().username);
        var downloadDirectory = '/Users/'+require("os").userInfo().username+'/Downloads/';

        const fs = require('fs');
        const path = require('path');
        const directory = '/Users/'+require("os").userInfo().username+'/Downloads/';
        fs.readdir(directory, (err, files) => {
            if (err) throw err;
             for (const file of files) {
                fs.unlink(path.join(directory, file), err => {
                    if (err
                        && (err.code === "EACCES" || err.code === "EPERM")) {
                        console.log("Retrying rename file: ")
                        return;
                    }
                });
            }
        });
    }