You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向基于Steward库的PHP Selenium脚本传递额外参数?

给lmc-eu/steward传递动态URL等参数的实现方法

1. 命令行传参格式

执行steward命令时,用--作为分隔符,后面跟上自定义参数(格式为--参数名=值),示例:

./vendor/bin/steward run tests chrome -- --base-url=https://your-test-site.com --login-user=admin --login-pass=123456

2. 在测试脚本中获取参数

有两种实用方式拿到这些参数:

方法一:通过PHPUnit配置读取

利用PHPUnit的测试套件配置直接获取参数,代码示例:

use PHPUnit\Framework\TestCase;

class LoginTest extends TestCase
{
    protected function setUp(): void
    {
        // 从PHPUnit配置中提取自定义参数
        $suiteOptions = $this->getTestSuite()->getConfiguration()->getOptions();
        // 给参数设置默认值,避免未传参时报错
        $baseUrl = $suiteOptions['base-url'] ?? 'https://default-site.com';
        $username = $suiteOptions['login-user'] ?? 'default-user';
        $password = $suiteOptions['login-pass'] ?? 'default-pass';

        // 用动态获取的URL打开页面
        $this->driver->get($baseUrl);
        // 后续填写登录表单等逻辑...
    }
}

方法二:直接解析命令行参数

如果上面的方法不适用,也可以手动解析$_SERVER['argv']数组:

use PHPUnit\Framework\TestCase;

class LoginTest extends TestCase
{
    // 封装一个获取参数的工具方法
    private function getParam(string $name, string $default = ''): string
    {
        foreach ($_SERVER['argv'] as $arg) {
            if (str_starts_with($arg, "--{$name}=")) {
                return substr($arg, strlen("--{$name}="));
            }
        }
        return $default;
    }

    protected function setUp(): void
    {
        $baseUrl = $this->getParam('base-url', 'https://default-site.com');
        $username = $this->getParam('login-user', 'default-user');
        $password = $this->getParam('login-pass', 'default-pass');

        $this->driver->get($baseUrl);
        // 登录操作...
    }
}

3. 敏感参数推荐用环境变量传递

如果要传密码这类敏感信息,建议用环境变量避免明文暴露:

# 先设置环境变量
export TEST_BASE_URL=https://your-test-site.com
export TEST_USER=admin
export TEST_PASS=123456
# 再执行steward命令
./vendor/bin/steward run tests chrome

然后在脚本中读取环境变量:

$baseUrl = getenv('TEST_BASE_URL') ?: 'https://default-site.com';
$username = getenv('TEST_USER') ?: 'default-user';
$password = getenv('TEST_PASS') ?: 'default-pass';

内容的提问来源于stack exchange,提问作者igen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:13:15