我寫了一些代碼,旨在確定用戶是否登錄到任何網站。我不明白代碼的執行順序,但我看不出如何解決它。任何見解都非常感謝。承諾和選擇器讓我失望
代碼:
var login_promises = [];
var logout_promises = [];
var toggle_login_promises = [];
var toggle_logout_promises = []; var loginStringsExist, logoutStringsExist;
var string_tally = {loginStrings: 0, logoutStrings: 0, toggle_in: 0, toggle_out: 0}
var promises = {loginStrings: [], logoutStrings: [], toggle_in: [], toggle_out: []};
var loginStrings = [ "login",
"Login",
"LOGIN",
"Log in",
"Log In",
"LOG IN",
"log in",
"signin",
"Signin",
"SIGNIN",
"sign in",
"Sign in",
"Sign In",
"SIGN IN",
"log on",
"Log on",
"Log On",
"LOG ON",
"logon",
"Logon",
"LOGON",
"logon id",
"Logon id",
"Logon Id",
"LOGON ID"
];
var logoutStrings = [ "sign out",
"Sign out",
"Sign Out",
"SIGN OUT",
"signout",
"Signout",
"SIGNOUT",
"log out",
"Log out",
"Log Out",
"LOG OUT",
"logout",
"Logout",
"LOGOUT"
];
var toggleInOutStrings = [ "signin/out",
"signin/out",
"sign in/out",
"Sign in/out",
"Sign in/Out",
"Sign In/Out",
"SIGN IN/OUT",
"sign in/out",
"Sign in/out",
"Sign in/Out",
"Sign In/Out",
"SIGN IN/OUT",
"login/out",
"login/out",
"log in/out",
"Log in/out",
"Log in/Out",
"Log In/Out",
"LOG IN/OUT",
"log in/out",
"Log in/out",
"Log in/Out",
"Log In/Out",
"LOG IN/OUT",
];
function login_check() {
}
var getStringExistsCount = function(string, type){
return new Promise(
function(reject, resolve){
element(by.linkText(string)).isPresent()
.then(function(el){
console.log("ELEMENTS FOUND: " + el)
if(el){
string_tally[type] ++;
}else{
console.log(string + " NOT FOUND");
}
resolve(el);
});
}
)
}
var load_promises = function(arr, type){
return new Promise(function(resolve, reject){
for (var i = 0; i < arr.length; i++) {
console.log(i + ") ")// + type + " " + string + "\n" + arr.length)
promises[type].push(getStringExistsCount(arr[i], type));
if(i === arr.length - 1){
console.log(promises[type]);
resolve();
}
}
});
}
login_check.prototype.is_account_logged_in = function(pw) {
return new Promise(
function(resolve, reject){
if(pw){
resolve(false)
}else{
load_promises(loginStrings, "loginStrings")
.then(function(){
load_promises(logoutStrings, "logoutStrings");
}).then(function(){
Promise.all(promises.logoutStrings);
})
.then(function(){
Promise.all(promises.logoutStrings)
console.log("LOGIN PROMISES: " + promises.loginStrings.length);
console.log("LOGOUT PROMISES: " + promises.logoutStrings.length);
console.log("TOGGLE LOGIN PROMISES: " + promises.toggle_in.length);
console.log("TOGGLE LOGOUT PROMISES: " + promises.toggle_out.length);
})
.then(function(){
console.log("STRING_TALLY:")
console.log(string_tally);
resolve(string_tally.loginStrings < string_tally.logoutStrings)
});
}
}
)
}
輸出:
.pw_is_present: false
0)
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
15)
16)
17)
18)
19)
20)
21)
22)
23)
24)
[ Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> } ]
0)
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
[ Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> } ]
LOGIN PROMISES: 25
LOGOUT PROMISES: 14
TOGGLE LOGIN PROMISES: 0
TOGGLE LOGOUT PROMISES: 0
STRING_TALLY:
{ loginStrings: 0, logoutStrings: 0, toggle_in: 0, toggle_out: 0 }
ELEMENTS FOUND: false
login NOT FOUND
ELEMENTS FOUND: false
sign out NOT FOUND
ELEMENTS FOUND: false
Login NOT FOUND
ELEMENTS FOUND: false
Sign out NOT FOUND
ELEMENTS FOUND: false
LOGIN NOT FOUND
ELEMENTS FOUND: false
Sign Out NOT FOUND
ELEMENTS FOUND: false
Log in NOT FOUND
ELEMENTS FOUND: false
SIGN OUT NOT FOUND
ELEMENTS FOUND: false
Log In NOT FOUND
ELEMENTS FOUND: false
signout NOT FOUND
ELEMENTS FOUND: false
LOG IN NOT FOUND
ELEMENTS FOUND: false
Signout NOT FOUND
ELEMENTS FOUND: false
log in NOT FOUND
ELEMENTS FOUND: false
SIGNOUT NOT FOUND
ELEMENTS FOUND: false
signin NOT FOUND
ELEMENTS FOUND: false
log out NOT FOUND
ELEMENTS FOUND: false
Signin NOT FOUND
ELEMENTS FOUND: false
Log out NOT FOUND
ELEMENTS FOUND: false
SIGNIN NOT FOUND
ELEMENTS FOUND: false
Log Out NOT FOUND
ELEMENTS FOUND: false
sign in NOT FOUND
ELEMENTS FOUND: false
LOG OUT NOT FOUND
ELEMENTS FOUND: false
Sign in NOT FOUND
ELEMENTS FOUND: false
logout NOT FOUND
ELEMENTS FOUND: false
Sign In NOT FOUND
ELEMENTS FOUND: false
Logout NOT FOUND
ELEMENTS FOUND: false
SIGN IN NOT FOUND
ELEMENTS FOUND: false
LOGOUT NOT FOUND
ELEMENTS FOUND: false
log on NOT FOUND
ELEMENTS FOUND: false
Log on NOT FOUND
ELEMENTS FOUND: false
Log On NOT FOUND
ELEMENTS FOUND: false
LOG ON NOT FOUND
ELEMENTS FOUND: false
logon NOT FOUND
ELEMENTS FOUND: false
Logon NOT FOUND
ELEMENTS FOUND: false
LOGON NOT FOUND
ELEMENTS FOUND: false
logon id NOT FOUND
ELEMENTS FOUND: false
Logon id NOT FOUND
ELEMENTS FOUND: false
Logon Id NOT FOUND
ELEMENTS FOUND: false
LOGON ID NOT FOUND
我已經測試了這個上應至少有一個匹配位點(即元素實測值:真
不要知道這筆交易是什麼
我不太清楚如何問這個,所以如果有人能夠看到這裏有任何想要的,我可以回答關於這個問題的進一步問題。
Promise.all(promises.logoutStrings)似乎創造了一個承諾,但你沒有做任何事情。你應該做什麼:... .then(()=> {返回Promise.all(promises.logoutStrings);).then((arrOfLogoutStrings)=> {//這裏有一些很酷的你的完成promsies數組}}) ;' – cnishina