Array not updating
I am doing some browser automation and starting getting into javascript very recently. At the moment I am very puzzled with the following:
module.exports = {
main_page(browser) {
var pos;
var tmp = ; //A
browser
.url(myUrl)
.waitForElementVisible('body', 1000)
.assert.elementPresent('#id > ul > li:nth-child(1)')
for (var i = 1 ; i <= 6; i+=1){
browser.getText(`#id > ul > li:nth-child(${i})`, function(result){
pos = result.value.substr(-1) //B
tmp.push(pos)
})
}
tmp.forEach(function(element) { //C
console.log(element);
});
...
browser.end();
},
}
I am trying to push pos
into my array tmp
so that I can use that to do something later.
What I can't understand is why isn't my array at A
being updated by my code at B
. My forEach at C
doesn't log anything. Can someone help me understand what is happening or explain how to properly do it?
Any input is welcome, thank you.
javascript automation nightwatch.js
add a comment |
I am doing some browser automation and starting getting into javascript very recently. At the moment I am very puzzled with the following:
module.exports = {
main_page(browser) {
var pos;
var tmp = ; //A
browser
.url(myUrl)
.waitForElementVisible('body', 1000)
.assert.elementPresent('#id > ul > li:nth-child(1)')
for (var i = 1 ; i <= 6; i+=1){
browser.getText(`#id > ul > li:nth-child(${i})`, function(result){
pos = result.value.substr(-1) //B
tmp.push(pos)
})
}
tmp.forEach(function(element) { //C
console.log(element);
});
...
browser.end();
},
}
I am trying to push pos
into my array tmp
so that I can use that to do something later.
What I can't understand is why isn't my array at A
being updated by my code at B
. My forEach at C
doesn't log anything. Can someone help me understand what is happening or explain how to properly do it?
Any input is welcome, thank you.
javascript automation nightwatch.js
browser
is an async process. Put theforEach
inside the callback after thepush
.
– Andy
Nov 25 '18 at 22:55
add a comment |
I am doing some browser automation and starting getting into javascript very recently. At the moment I am very puzzled with the following:
module.exports = {
main_page(browser) {
var pos;
var tmp = ; //A
browser
.url(myUrl)
.waitForElementVisible('body', 1000)
.assert.elementPresent('#id > ul > li:nth-child(1)')
for (var i = 1 ; i <= 6; i+=1){
browser.getText(`#id > ul > li:nth-child(${i})`, function(result){
pos = result.value.substr(-1) //B
tmp.push(pos)
})
}
tmp.forEach(function(element) { //C
console.log(element);
});
...
browser.end();
},
}
I am trying to push pos
into my array tmp
so that I can use that to do something later.
What I can't understand is why isn't my array at A
being updated by my code at B
. My forEach at C
doesn't log anything. Can someone help me understand what is happening or explain how to properly do it?
Any input is welcome, thank you.
javascript automation nightwatch.js
I am doing some browser automation and starting getting into javascript very recently. At the moment I am very puzzled with the following:
module.exports = {
main_page(browser) {
var pos;
var tmp = ; //A
browser
.url(myUrl)
.waitForElementVisible('body', 1000)
.assert.elementPresent('#id > ul > li:nth-child(1)')
for (var i = 1 ; i <= 6; i+=1){
browser.getText(`#id > ul > li:nth-child(${i})`, function(result){
pos = result.value.substr(-1) //B
tmp.push(pos)
})
}
tmp.forEach(function(element) { //C
console.log(element);
});
...
browser.end();
},
}
I am trying to push pos
into my array tmp
so that I can use that to do something later.
What I can't understand is why isn't my array at A
being updated by my code at B
. My forEach at C
doesn't log anything. Can someone help me understand what is happening or explain how to properly do it?
Any input is welcome, thank you.
javascript automation nightwatch.js
javascript automation nightwatch.js
asked Nov 25 '18 at 22:52
Tiago MateusTiago Mateus
269
269
browser
is an async process. Put theforEach
inside the callback after thepush
.
– Andy
Nov 25 '18 at 22:55
add a comment |
browser
is an async process. Put theforEach
inside the callback after thepush
.
– Andy
Nov 25 '18 at 22:55
browser
is an async process. Put the forEach
inside the callback after the push
.– Andy
Nov 25 '18 at 22:55
browser
is an async process. Put the forEach
inside the callback after the push
.– Andy
Nov 25 '18 at 22:55
add a comment |
1 Answer
1
active
oldest
votes
The answer to this StackOverflow post might actually be what you are looking for.
browser.getText returns a promise, so you should do something like this
browser.getText(`#id > ul > li:nth-child(${i})`).then(function(result){
pos = result.value.substr(-1) //B
tmp.push(pos)
})
Promises are basically used with asynchronous data. Check out this https://developers.google.com/web/fundamentals/primers/promises to know more about promises.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53472815%2farray-not-updating%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The answer to this StackOverflow post might actually be what you are looking for.
browser.getText returns a promise, so you should do something like this
browser.getText(`#id > ul > li:nth-child(${i})`).then(function(result){
pos = result.value.substr(-1) //B
tmp.push(pos)
})
Promises are basically used with asynchronous data. Check out this https://developers.google.com/web/fundamentals/primers/promises to know more about promises.
add a comment |
The answer to this StackOverflow post might actually be what you are looking for.
browser.getText returns a promise, so you should do something like this
browser.getText(`#id > ul > li:nth-child(${i})`).then(function(result){
pos = result.value.substr(-1) //B
tmp.push(pos)
})
Promises are basically used with asynchronous data. Check out this https://developers.google.com/web/fundamentals/primers/promises to know more about promises.
add a comment |
The answer to this StackOverflow post might actually be what you are looking for.
browser.getText returns a promise, so you should do something like this
browser.getText(`#id > ul > li:nth-child(${i})`).then(function(result){
pos = result.value.substr(-1) //B
tmp.push(pos)
})
Promises are basically used with asynchronous data. Check out this https://developers.google.com/web/fundamentals/primers/promises to know more about promises.
The answer to this StackOverflow post might actually be what you are looking for.
browser.getText returns a promise, so you should do something like this
browser.getText(`#id > ul > li:nth-child(${i})`).then(function(result){
pos = result.value.substr(-1) //B
tmp.push(pos)
})
Promises are basically used with asynchronous data. Check out this https://developers.google.com/web/fundamentals/primers/promises to know more about promises.
edited Nov 25 '18 at 23:20
answered Nov 25 '18 at 23:12
zezezeze
256
256
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53472815%2farray-not-updating%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
browser
is an async process. Put theforEach
inside the callback after thepush
.– Andy
Nov 25 '18 at 22:55