Javascript、webdriverio (v2.1.2) を使用して、内部サイトからデータを抽出しています。内部サイトは SSO 対応なので、別のアプリケーションで認証されている場合は、このアプリケーションにログインする必要はありません (企業のイントラネット アプリケーションでは一般的です)。私は以下を達成する予定です、
- 必要な機能を持つクライアントを作成する
- 必要な URL を渡す
- お楽しみに : ページのタイトルを印刷する
ページに要素が存在するかどうかを確認します。はいの場合、それはログインページです。そうでない場合、それはログインページではありません
login = function (username, password) { if (!browserClientUtil) { throw "Unable to load browserClientUtil.js"; } browserClientUtil .createClient() .url(_Url) .title(function (err, res) { console.log('Title is: ' + res.value); }) .isExisting('input#login_button.login_button', function (err, isExisting) { browserClientUtil.getCurrentClient() .setValue('input#USER.input', username) .setValue('input#PASSWORD.input', password) //.saveScreenshot('ultimatixLoginDetails.png') .click('input#login_button.login_button') .pause(100); handlePostLogin(); });
};
これが最善の方法ですか?ログインページを検証するためのコードを別の関数に分離しようとしましたが、webdriver のすべてがコールバックの一部として発生し、正しい方法で実行しているかどうかわかりません。 その関数によって返される最終的な値になるコールバックから戻るにはどうすればよいですか?
login = function (username, password) {
if (!browserClientUtil) {
throw "Unable to load browserClientUtil.js";
}
browserClientUtil
.createClient()
.url(_Url)
.title(function (err, res) {
console.log('Title is: ' + res.value);
});
if(isThisLoginPage()){
browserClientUtil.getCurrentClient()
.setValue('input#USER.input', username)
.setValue('input#PASSWORD.input', password)
//.saveScreenshot('ultimatixLoginDetails.png')
.click('input#login_button.login_button')
.pause(100);
handlePostLogin();
}
};
isThisLoginPage = function() {
var client = browserClientUtil.getCurrentClient();
if(!client) {
throw "Unable to get reference for current client, hence cannot validate if this is login page.";
}
client.isExisting('input#login_button.login_button', function (err, isExisting) {
if(isExisting) {
return true;
}
});
return false;
};