3

有沒有辦法登錄到網站而不寫代碼中的實際密碼?例如,我創建了一個登錄功能:Selenium WebDriver:登錄到網站

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"); 
}); 
+0

我十分不明白你的問題,是它,你不希望它被包含在代碼或任何地方(配置文件)在你的項目。由於安全問題? –

+0

我不想在代碼中的任何地方顯示密碼,最好不要在配置文件中出於安全考慮。 –

+0

在運行代碼時如何通過命令行傳遞它? –

回答

3

您的代碼將需要訪問憑據。我認爲解決這個問題最常見的方法是將憑證放入配置文件並從那裏讀取。如果您不希望密碼包含在代碼中,您可以不在配置文件中將其提交到存儲庫中,而是通過其他方式共享。或者,您可以將用戶名和密碼作爲command-line arguments傳遞給您的測試。

Here are NodeJS examples how to store the credentials in different ways。這些例子是針對數據庫的,但這個想法是一樣的。

0

如果您正在使用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> 

辦刊執行白衣QA配置文件,例如,和在Java代碼中使用:

driver.findElement(By.xpath("//*[@id='Email']")).sendKeys(System.getProperty("admin.username")); 
driver.findElement(By.xpath("//*[@id='Password']")).sendKeys(System.getProperty("admin.password"));