Azure Pipeline - 使用不同的凭据打开 RemoteWebDriver

Azure Pipeline - Opening RemoteWebDriver with different credentials

基本上我们在一个环境 (DEV) 中设置测试自动化。对于此环境,我们使用用户凭据打开浏览器进行所有测试。所以在我们的开发环境中,我们为所有用户设置了相同的密码。这与 UAT 中的方法相同,但密码不同

测试时,我们使用模拟启动浏览器,并为该用户 'run as' 启动浏览器

private static RemoteWebDriver OpenChromeBrowser(string username) {
var service = ChromeDriverService.CreateDefaultService(driverpath)

如果用户不为空,那么我们这样做

var pwd = new SecureString()

service.StartDomain = Configurationhelper.Domain
service.StartupUserName = username
service.StartupPassword= = pwd
service.StartupLoadUserProfile = true

我们将域和密码以及其他环境变量作为常量存储在单独的配置文件中。

我们的 Azure 管道有 2 个独立的客户端,现在 UAT 和 DEV 指向同一个工件。两种环境的任务和变量相同,但 url 和数据库连接的值不同

主要问题:这现在行不通了,因为当我们运行UAT 中的测试时,它们会立即失败并显示“密码不正确”,因为我们已经对密码进行了硬编码到我们的代码中。所以我正在寻找这个问题的最佳解决方案

有没有办法修改此代码并可能将密码作为秘密存储在 AZURE 管道变量中?因此,例如在我们的管道变量中,我们将拥有 Dev 和 UAT 的密码。然后启动 chromedriver 并将用户凭据设置为来自 azure 管道的变量?

在这种情况下推荐的方法是什么?

Is there a way to modify this code and to maybe store passwords as secrets in AZURE pipeline variables?

答案是肯定的。

我们正在做同样的事情“将域和密码以及其他环境变量作为常量存储在单独的配置文件中”,我们称之为 app.config,我是不确定我的解决方案是否完全满足您的要求,但您可以试试。

我在 app.config 中定义了以下内容:

<configuration>
    <connectionStrings>
        <add name="DatabaseName" connectionString="DatabaseURL" />
    </connectionStrings>
</configuration>

管道变量中的变量根据不同环境修改DatabaseNameDatabaseURL,我使用任务Replace Tokens修改DatabaseNameDatabaseURL.

我将 repo 中的 app.config 更改为:

<configuration>
    <connectionStrings>
        <add name="#{DatabaseName}#" connectionString="#{DatabaseURL}#" />
    </connectionStrings>
</configuration>

.config文件中的变量格式为#{DatabaseName}# & #{DatabaseURL}#。

然后定义Variables上的变量DatabaseNameDatabaseURL作为secrets:

在这种情况下,connectionStrings将根据阶段修改为不同的值。