2017-04-10 73 views
0

我想要做一些自動化測試期運用nightwatch:如何在nightwatch.js中使用executeAsync?

this.demoTest = function (browser) { 
    browser.executeAsync(function(data, done) { 
     someAsyncOperation(function() { 
     done(true); 
    }); 
    }, [imagedata], function(result) { 
     // ... 
    }); 
}; 

但我不知道如何使用executeAsync,流動是我的代碼:

module.exports = { 
    'Demo asynchronous' : function(client){ 
     client.url(client.launchUrl); 
     client.executeAsync(function(data, done) { 
      someAsyncOperation(function() { 
       client.setValue('#PoiSearch', data); 
       client.click('#POISearchButton'); 
       done(true); 
     }); 
     }, ['hotle'], function(result) { 
      client.expect.element('#Map div[name*="mark"]').to.be.present; 
     }); 
    } 
} 

我只是想輸入的詞,比點擊搜索按鈕,結果我想知道DOM有特殊元素,但我不知道如何使用executeAsync。

回答

1

你傳遞給executeAsync的函數被執行,就好像它在你控制的瀏覽器的javascript控制檯中執行一樣(其他所有內容都在node/selenium上下文中執行)因此,你無法訪問該executeAsync函數內的client變量

如果你想等來填充使用夜巡API這些領域,你可以做更多的東西,如:

```

module.exports = { 
    'Demo asynchronous' : function(client){ 
     client.url(client.launchUrl); 
     client.executeAsync(function(data, done) { 
      // start executing in the browser, no access to outside variables 
      someAsyncOperation(function() {     
       done(true); 
      });    
     }); 
     // end executing in the browser, back in the node context 
     client.setValue('#PoiSearch', 'hotle'); 
     client.click('#POISearchButton');; 
     client.expect.element('#Map div[name*="mark"]').to.be.present; 
    } 
} 

```

相關問題