如何向基于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
相关产品推荐
相关产品推荐

