📌  相关文章
📜  如何使用Selenium Web Driver 和 JavaScript 登录任何网站?

📅  最后修改于: 2022-05-13 01:56:37.750000             🧑  作者: Mango

如何使用Selenium Web Driver 和 JavaScript 登录任何网站?

本文展示了在Selenium Web DriverJavaScript的帮助下使用自动化登录任何网站的方法。在这种方法中将使用承诺的概念。这将通过登录 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 文件中的。

  1. 进入登录页面。
  2. 在页面上找到用于输入用户名的文本框。
  3. 输入给定的用户名。
  4. 在页面上找到用于输入密码的文本框。
  5. 输入给定的密码。
  6. 找到登录按钮。
  7. 单击登录按钮。

第 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!");
    });


输出: