我们正在测试的网站使用 Windows 身份验证。我们有一个使用 Start-Process 的脚本来使用备用用户凭据启动 Internet Explorer。看起来像:
$username = 'test\AdminUser1'
$selected_password = 'P@$$word'
$selected_runCommand = 'http:\\QA_env1.com\MainPortal.asp'
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $selected_password -AsPlainText -Force))
$path = $env:programfiles
Start-Process -FilePath "$path\Internet Explorer\iexplore.exe" -LoadUserProfile -Credential $cred -ArgumentList $selected_runCommand
在执行测试计划的过程中,我们最终可能会打开六个会话,因为它们都有相同的标题,所以没有简单的方法来区分它们。我想做的是将用户 ID(可能还有其他信息)附加到标题。我一直在努力搜索,发现使用 Start-Process -PassThru 获取和更改窗口标题的 PS 示例,这不起作用(不确定是因为它根本不适用于 IE,还是它确实工作,但应用程序代码将覆盖它)。还使用 Win32 API 来获取窗口句柄和更改标题,这同样不适用于 IE。
显然,WebClient 具有更改选项卡标题的方法,但是我们在使这种方法(使用 PS 或 Selenium)与此处的身份验证要求相抵触时遇到了严重的问题。当然,我们可以在启动站点时弹出一个 Windows 身份验证对话框,但是使用带有 UI 的脚本的全部意义在于让用户无需记住十几个测试 ID 和密码。