上下文:
我们尝试配置运行器虚拟机以执行UFT和Selenium。这些虚拟机基于citrix,并在夜间以最新的生产映像重新启动,并在此重新启动过程中丢失其自动化配置。然后,一个分担的任务将执行具有提升权限的powershellscript,该脚本将jenkinsfolder复制到该虚拟机,下载jenkins从站。用于连接的jar,安装uft和eclipse,最后开始连接到jenkins。
如果我以管理员身份启动powershell并手动执行命令,则一切正常。
如果我将其放入powershell脚本文件中,并使用任务分散的Task执行它,看起来一切正常。但是,如果我通过詹金斯(Jenkins)启动UFT测试用例,则会在工作中得到“返回参数的类型无效”的信息。看起来该连接不是从提升权限开始的。
如果我将脚本切成两半。除了一个脚本中的连接和第二脚本中的连接以外的所有步骤,该测试用例都可以正常运行。
我在批处理文件中重建脚本,但是具有完全相同的行为。
所以选项3起作用了,但是citrix管理员和我的领导对这种不可预测的行为不满意。是否有人暗示我们如何才能在一个Powershell脚本中运行该脚本?
完整密码(产生错误):
switch -wildcard($env:computername){
"wxp-guirun-p*" {
robocopy '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\VhvEntw' 'c:\VHVEntw' /E
Invoke-WebRequest https://jenkins-master.ads.vhv.de/jnlpJars/slave.jar -OutFile c:\vhvEntw\Jenkins\slave.jar
cscript '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\UFT_3811-000\14.0\Package\Wrapper\Default\Wrapper_64.vbs'
Start-Process 'C:\Program Files (x86)\HP\Unified Functional Testing\bin\HP.UFT.LicenseInstall.exe' -Argument 'concurrent 20402 1 SERVERADRESS'
cscript '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\eclipse_1685-000\4.10.0\Package\Wrapper\Default\Wrapper.vbs'
break;
}
}
echo $env:computername
switch -wildcard($env:computername){
"wxp-guirun-p01" {
java -jar c:\vhventw\jenkins\slave.jar -jnlpUrl SERVERADRESS AND SECRET -workDir "C:\vhvEntw\Jenkins"
break;
}
}
将其切成两半:
安装:
switch -wildcard($env:computername){
"wxp-guirun-p*" {
robocopy '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\VhvEntw' 'c:\VHVEntw' /E
Invoke-WebRequest https://jenkins-master.ads.vhv.de/jnlpJars/slave.jar -OutFile c:\vhvEntw\Jenkins\slave.jar
cscript '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\UFT_3811-000\14.0\Package\Wrapper\Default\Wrapper_64.vbs'
Start-Process 'C:\Program Files (x86)\HP\Unified Functional Testing\bin\HP.UFT.LicenseInstall.exe' -Argument 'concurrent 20402 1 SERVERADRESS'
cscript '\\vhv\sachgebiete\Sachgebiete\Testautomatisierung\Installationsdateien\Runner\eclipse_1685-000\4.10.0\Package\Wrapper\Default\Wrapper.vbs'
break;
}
}
连接:
echo $env:computername
switch -wildcard($env:computername){
"wxp-guirun-p01" {
java -jar c:\vhventw\jenkins\slave.jar -jnlpUrl SERVERADRESS AND SECRET -workDir "C:\vhvEntw\Jenkins"
break;
}
}
如果您的UFT.exe进程是使用Quicktest.Automation COM对象创建的,则该进程将不会从其父进程继承任何东西(如提升的权限,处理程序,环境变量等)。它似乎是从用户上下文中衍生出来的。
作为一种解决方法,您可以从命令行(禁用启动屏幕和加载项选择)启动UFT.exe进程,稍等片刻,然后将其与自动化对象连接。通过这种方式,UFT将继承您的环境变量和处理程序,以及父进程的高权限(Jenkins)