ユーザーがどんなサイトにもログインしているかどうかを調べるためのコードを少し書いた。私はコードの実行順序を理解していませんが、それを修正する方法はわかりません。どんな洞察も大変ありがとうございます。約束とセレクタが私を倒した
コード:
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)
});
}
}
)
}
出力:私は(少なくとも1本のマッチを持つべきサイト上でこれをテストしている、すなわち要素がFOUND
.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);)を返します。((arrOfLogoutStrings)=> {//ここでは、 ; ' – cnishina