我无法将一个文件中函数的值 return 传递到 Node.js 中的另一个文件,我变得不确定
I'm unable to return the Value from the Function in one file to another file in Node.js, I'm getting undefined
add.js
var webdriverio = require('webdriverio');
function add(a, b) {
var add;
var mul;
describe('This is from add.js file', function() {
this.timeout(50000);
var driver = {};
before(function() {
driver = webdriverio.remote({
desiredCapabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--start-maximized']
}
}
});
return driver.init();
});
it('Example1', function() {
return driver.url("https://www.google.co.in/").getText("//a[text()='Gmail']").then(function(text) {
add = (text);
});
});
it('Example2', function() {
return driver.getText("//a[text()='Images']").then(function(text) {
mul = (text);
});
});
});
console.log({
add,
mul
}); //{ add: undefined, mul: undefined }
return {
add,
mul
};
}
module.exports = add;
main.js
var webdriverio = require('webdriverio');
var add = require("./add.js");
var d = add("G", "I");
describe('This is from Main.js file', function() {
this.timeout(50000);
var driver = {};
before(function() {
driver = webdriverio.remote({
desiredCapabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--start-maximized']
}
}
});
return driver.init();
});
it('Example1', function() {
return driver.url("https://www.google.co.in/").getText("//a[text()=" + d.add + "]").then(function(text) {
add = (text);
});
});
it('Example2', function() {
return driver.getText("//a[text()=" + d.mul + "]").then(function(text) {
mul = (text);
});
});
});
console.log(d); //prints { add: undefined, mul: undefined }
当我尝试从 add.js 文件 return {add, mul}
到 main.js 时,没有返回值而是显示 {add: undefined, mul: undefined}
.
我正在使用 Webdriverio - Mocha 框架
看起来 add.js
是 运行 异步代码。尝试使用 add.js
return Promise,使用 Promise.all 来确保 add
和 mul
的人口数量,并 await
在 main.js
:
function add(a, b) {
return new Promise((resolveAdd, rejectAdd) => {
describe('This is from add.js file', function() {
this.timeout(50000);
var driver = {};
before(function() {
driver = webdriverio.remote({
desiredCapabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--start-maximized']
}
}
});
return driver.init();
});
const example1Promise = new Promise(resolveP1 => {
it('Example1', function() {
return driver.url("https://www.google.co.in/").getText("//a[text()='Gmail']").then(resolveP1);
});
});
const example2Promise = new Promise(resolveP2 => {
it('Example2', function() {
return driver.getText("//a[text()='Images']").then(resolveP2);
});
});
Promise.all(example1Promise, example2Promise).then(([add, mul]) => {
resolveAdd({ add, mul });
});
});
});
}
module.exports = add;
main.js:
(async () => {
const d = await add("G", "I");
console.log(d);
})();
add.js
var webdriverio = require('webdriverio');
function add(a, b) {
var add;
var mul;
describe('This is from add.js file', function() {
this.timeout(50000);
var driver = {};
before(function() {
driver = webdriverio.remote({
desiredCapabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--start-maximized']
}
}
});
return driver.init();
});
it('Example1', function() {
return driver.url("https://www.google.co.in/").getText("//a[text()='Gmail']").then(function(text) {
add = (text);
});
});
it('Example2', function() {
return driver.getText("//a[text()='Images']").then(function(text) {
mul = (text);
});
});
});
console.log({
add,
mul
}); //{ add: undefined, mul: undefined }
return {
add,
mul
};
}
module.exports = add;
main.js
var webdriverio = require('webdriverio');
var add = require("./add.js");
var d = add("G", "I");
describe('This is from Main.js file', function() {
this.timeout(50000);
var driver = {};
before(function() {
driver = webdriverio.remote({
desiredCapabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--start-maximized']
}
}
});
return driver.init();
});
it('Example1', function() {
return driver.url("https://www.google.co.in/").getText("//a[text()=" + d.add + "]").then(function(text) {
add = (text);
});
});
it('Example2', function() {
return driver.getText("//a[text()=" + d.mul + "]").then(function(text) {
mul = (text);
});
});
});
console.log(d); //prints { add: undefined, mul: undefined }
当我尝试从 add.js 文件 return {add, mul}
到 main.js 时,没有返回值而是显示 {add: undefined, mul: undefined}
.
我正在使用 Webdriverio - Mocha 框架
看起来 add.js
是 运行 异步代码。尝试使用 add.js
return Promise,使用 Promise.all 来确保 add
和 mul
的人口数量,并 await
在 main.js
:
function add(a, b) {
return new Promise((resolveAdd, rejectAdd) => {
describe('This is from add.js file', function() {
this.timeout(50000);
var driver = {};
before(function() {
driver = webdriverio.remote({
desiredCapabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--start-maximized']
}
}
});
return driver.init();
});
const example1Promise = new Promise(resolveP1 => {
it('Example1', function() {
return driver.url("https://www.google.co.in/").getText("//a[text()='Gmail']").then(resolveP1);
});
});
const example2Promise = new Promise(resolveP2 => {
it('Example2', function() {
return driver.getText("//a[text()='Images']").then(resolveP2);
});
});
Promise.all(example1Promise, example2Promise).then(([add, mul]) => {
resolveAdd({ add, mul });
});
});
});
}
module.exports = add;
main.js:
(async () => {
const d = await add("G", "I");
console.log(d);
})();