简体   繁体   English

Node.JS-如何对JS中的动态文件名执行验证?

[英]Node.JS - How to perform verfication on a dynamic file name in JS?

I've tried to used in "split()" in order to ignore the dynamic string inside the file name and to perform verification only on the fixed value "Schedule" and then to return the response for to pass the test. 我尝试在“ split()”中使用该命令,以便忽略文件名中的动态字符串,并仅对固定值“ Schedule”执行验证,然后返回响应以通过测试。

describe('Frontage - Calendar test cases', function() {

    var fs = require('fs');
    var splitFileName = "Schedule"
    var filename = 'c:\\automation\\tests\\downloaded\\' + splitFileName.split();

    it('New App - Calendar - Print calendar', function(){
       $$("button.font-xs.md-button.ng-scope.md-ink-ripple.gray-btn").get(1).click();
       browser.driver.wait(function() {
          return fs.existsSync(filename);
       }, 30000);
    });
});

THE ERROR 错误

Failures:

  1) Test cases pull - Frontage Sanity Testing  Frontage - Calendar test cases New App - Calendar - Print calendar
   Message:
     Error: Wait timed out after 30000ms
   Stacktrace:
     Error: Wait timed out after 30000ms
    at C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1630:20
    at [object Object].promise.ControlFlow.runInFrame_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1877:20)
    at [object Object].promise.Callback_.goog.defineClass.notify (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2464:25)
    at [object Object].promise.Promise.notify_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:563:12)
    at Array.forEach (native)
    at Object.goog.array.forEach (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\array\array.js:203:43)
    at [object Object].promise.Promise.notifyAll_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:552:16)
    at goog.async.run.processWorkQueue (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
From: Task: <anonymous wait>
    at [object Object].promise.ControlFlow.wait (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1617:15)
    at [object Object].webdriver.WebDriver.wait (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:714:21)
    at [object Object].<anonymous> (C:\automation\tests\testCases\newApp\calendarTC.js:382:23)
    at C:\automation\npm\node_modules\protractor\node_modules\jasminewd\index.js:94:14
    at [object Object].promise.ControlFlow.runInFrame_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1877:20)
    at [object Object].promise.ControlFlow.runEventLoop_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1755:8)
    at [object Object].<anonymous> (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2056:12)
    at goog.async.run.processWorkQueue (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
    at runMicrotasksCallback (node.js:337:7)
    at process._tickCallback (node.js:355:11)
From: Task: Asynchronous test function: it()
    at [object Object].<anonymous> (C:\automation\npm\node_modules\protractor\node_modules\jasminewd\index.js:93:33)
    at [object Object].<anonymous> (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\async-callback.js:45:37)
    at [object Object].jasmine.Block.execute (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:1174:17)
    at [object Object].jasmine.Queue.next_ (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31)
    at [object Object].jasmine.Queue.start (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2162:8)
    at [object Object].jasmine.Spec.execute (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2503:14)
    at [object Object].jasmine.Queue.next_ (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31)
    at onComplete (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2205:18)
    at [object Object].jasmine.Spec.finish (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2477:5)
    at [object Object].onComplete (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2504:10)==== async task ====
Error
    at [object Object].<anonymous> (C:\automation\tests\testCases\newApp\calendarTC.js:380:5)
    at [object Object].jasmine.Env.describe_ (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:913:21)
    at [object Object].jasmine.Env.describe (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:898:15)
    at describe (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:658:27)
    at Object.<anonymous> (C:\automation\tests\testCases\newApp\calendarTC.js:1:63)

You can use fs.readdir to get all the filenames, and then check them with a regular expression against the thing you are trying to match. 您可以使用fs.readdir来获取所有文件名,然后使用正则表达式针对您要匹配的内容进行检查。

it('New App - Calendar - Print calendar', function(){
   $$("button.font-xs.md-button.ng-scope.md-ink-ripple.gray-btn").get(1).click();
   browser.driver.wait(function() {
      var filepath = 'c:\\automation\\tests\\downloaded\\';
      var matcher = /Schedule/;
      var foundFile = false;
      fs.readdirSync(filepath).forEach(function(filename) {
          if (matcher.test(filename)) {
             foundFile = true;
           }
       });
       return foundFile;
   }, 30000);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM