如何使用Selenium Web Driver 和 JavaScript 登录任何网站?
本文展示了在Selenium Web Driver和JavaScript的帮助下使用自动化登录任何网站的方法。在这种方法中将使用承诺的概念。这将通过登录 GeeksforGeeks 网站来展示。必须遵循以下步骤。
第 1 步:按照适用于 Windows 或 Linux 的步骤安装最新的 Node.js 运行时。
第 2 步:创建一个 package.json 文件以创建 Node 应用程序。这可以通过运行以下命令并执行所需的步骤来完成。
npm init
第 3 步:安装Selenium webdriver 包。这可以通过在安装节点的同一目录中打开终端/命令提示符并运行以下命令来完成。
npm install selenium-webdriver
第 4 步:安装将用于自动化浏览器的浏览器驱动程序。本文使用的浏览器是 Chrome,因此需要安装 chromedriver 包。这可以使用以下命令来完成。
npm install chromedriver
第 5 步:创建一个 JSON 文件(例如,credentials.json)来存储用户名/电子邮件和密码。以下格式可用于保存凭据。
{
"email": "your-username",
"pass": "your-password"
}
第 6 步:在凭证文件所在的目录中创建一个 JavaScript 文件。该文件将包含用于控制浏览器并自动登录的代码。按照以下步骤登录 GeeksforGeeks 页面。这是写在这个主要的 JavaScript 文件中的。
- 进入登录页面。
- 在页面上找到用于输入用户名的文本框。
- 输入给定的用户名。
- 在页面上找到用于输入密码的文本框。
- 输入给定的密码。
- 找到登录按钮。
- 单击登录按钮。
第 7 步:使用以下命令启动包含脚本的 JavaScript 文件。
node scriptfile.js
完整代码:
Javascript
// Include the chrome driver
require("chromedriver");
// Include selenium webdriver
let swd = require("selenium-webdriver");
let browser = new swd.Builder();
let tab = browser.forBrowser("chrome").build();
// Get the credentials from the JSON file
let { email, pass } = require("./credentials.json");
// Step 1 - Opening the geeksforgeeks sign in page
let tabToOpen =
tab.get("https://auth.geeksforgeeks.org/");
tabToOpen
.then(function () {
// Timeout to wait if connection is slow
let findTimeOutP =
tab.manage().setTimeouts({
implicit: 10000, // 10 seconds
});
return findTimeOutP;
})
.then(function () {
// Step 2 - Finding the username input
let promiseUsernameBox =
tab.findElement(swd.By.css("#luser"));
return promiseUsernameBox;
})
.then(function (usernameBox) {
// Step 3 - Entering the username
let promiseFillUsername =
usernameBox.sendKeys(email);
return promiseFillUsername;
})
.then(function () {
console.log(
"Username entered successfully in" +
"'login demonstration' for GEEKSFORGEEKS"
);
// Step 4 - Finding the password input
let promisePasswordBox =
tab.findElement(swd.By.css("#password"));
return promisePasswordBox;
})
.then(function (passwordBox) {
// Step 5 - Entering the password
let promiseFillPassword =
passwordBox.sendKeys(pass);
return promiseFillPassword;
})
.then(function () {
console.log(
"Password entered successfully in" +
" 'login demonstration' for GEEKSFORGEEKS"
);
// Step 6 - Finding the Sign In button
let promiseSignInBtn = tab.findElement(
swd.By.css(".btn.btn-green.signin-button")
);
return promiseSignInBtn;
})
.then(function (signInBtn) {
// Step 7 - Clicking the Sign In button
let promiseClickSignIn = signInBtn.click();
return promiseClickSignIn;
})
.then(function () {
console.log("Successfully signed in GEEKSFORGEEKS!");
})
.catch(function (err) {
console.log("Error ", err, " occurred!");
});
输出: