Node.js Selenium WebDriver:登录到网站

Node.js Selenium WebDriver:登录到网站,node.js,selenium,selenium-webdriver,automated-tests,e2e-testing,Node.js,Selenium,Selenium Webdriver,Automated Tests,E2e Testing,有没有一种方法可以不在代码中写下实际密码就登录到网站。例如,我创建了一个用于登录的函数: var isAlreadyLogIn = false; function LogIn (userId, password) { if (!isAlreadyLogIn) { driver.findElement(By.xpath("//*[@id='Email']")).sendKeys(userId); driver.findElement(By.xpath("/

有没有一种方法可以不在代码中写下实际密码就登录到网站。例如,我创建了一个用于登录的函数:

var isAlreadyLogIn = false;

function LogIn (userId, password) {
    if (!isAlreadyLogIn) {
        driver.findElement(By.xpath("//*[@id='Email']")).sendKeys(userId);
        driver.findElement(By.xpath("//*[@id='Password']")).sendKeys(password);
        driver.findElement(By.xpath("//input[@value='Login']")).click();
        isAlreadyLogIn = true;
    }
}

it('Should login', function(done) {
    LogIn("username", "password");
});

您的代码将需要访问凭据。我认为解决这个问题最常用的方法是将凭证放入配置文件中并从中读取。如果您不希望密码包含在代码中,您可以不在配置文件中提交到存储库,而是以不同的方式共享它。或者,您可以传递测试的用户名和密码


。这些例子是针对数据库的,但想法是一样的

如果您使用的是maven,一个选项是使用配置文件和覆盖系统属性

    <profile>
        <id>QA</id>
        <properties>
            <runUrl>http://qaenvironment.com </runUrl>
            <admin.username>admin</admin.username>
            <admin.password>adminpass</admin.password>          
            <noadmin.username>noadmin</noadmin.username>
            <noadmin.password>qwerty123</noadmin.password>
        </properties>
    </profile>

一种选择是使用环境变量存储用户名和密码。这是SauceLabs推荐的。他们有一个最佳实践页面,其中包含关于如何创建环境变量等的更多细节


我完全不理解您的问题,是您不希望它包含在代码中还是项目中的任何地方(配置文件)。出于安全考虑?出于安全考虑,我不希望密码在代码中的任何地方显示,最好不要在配置文件中显示。运行代码时,通过命令行传递密码如何?
driver.findElement(By.xpath("//*[@id='Email']")).sendKeys(System.getProperty("admin.username"));
driver.findElement(By.xpath("//*[@id='Password']")).sendKeys(System.getProperty("admin.password"));