【问题标题】:Azure Pipeline - Opening RemoteWebDriver with different credentialsAzure Pipeline - 使用不同的凭据打开 RemoteWebDriver
【发布时间】:2020-12-12 08:27:13
【问题描述】:

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

在测试时,我们使用模拟启动浏览器并将浏览器作为该用户的“运行方式”启动

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 和 db 连接的值不同

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

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

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

【问题讨论】:

    标签: c# azure automation azure-devops


    【解决方案1】:

    有没有办法修改此代码并将密码作为机密存储在 AZURE 管道变量中?

    答案是肯定的。

    我们正在做同样的事情“将域和密码以及其他环境变量作为常量存储在单独的配置文件中”,我们称之为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}#。

    然后在基于阶段的变量上定义变量DatabaseNameDatabaseURL作为秘密:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 2021-01-03
    • 2023-01-23
    • 1970-01-01
    • 2016-11-22
    • 2014-12-23
    • 2020-02-17
    • 1970-01-01
    相关资源
    最近更新 更多