我在Windows VM上运行Robotframework / Selenium测试,为了处理Windows身份验证弹出窗口,我使用了一个简单的AutoItLibrary发送密钥。
问题是如果我打开远程桌面(远程虚拟机),一切正常,但如果我最小化或关闭远程VM窗口,发送密钥将停止工作。
我可以在脚本发送密钥后立即离开机器,其余的测试也很顺利。
我该如何处理这种情况?我不希望每次运行都要查看测试以发送凭据。
示例:
Login Windows Authentication
[Documentation] Windows Authentication using
Send ${USERNAME}
Send {TAB}
Send ${PASSWORD}
Send {ENTER}
我也尝试过这个失败:
http://user:password@example.com
感谢。
答案 0 :(得分:0)
在Windows机器中,假设您使用"管理员"那么我建议你创建另一个用户" Someuser"具有远程桌面权限。
使用" Someuser"远程登录到Windows机器从这个会议开始,即" Someuser"通过以" Administrator"登录,打开另一台远程桌面到同一台机器。
这样,Windows机器将始终处于活动状态,因为"管理员"你不应该面对这个问题!即使您关闭" Someuser"。
的远程桌面希望它有所帮助!
答案 1 :(得分:0)
去过那里,完成了;) 在坚果壳中,我从Windows& VM内部,如果没有活动用户连接到Windows VM,就没有桌面环境。这意味着任何与桌面/ GUI交互的应用程序/服务/程序都无法获得正确的对象来处理 - 没有菜单,没有弹出窗口,甚至屏幕截图都是空白的(这是很好的练习,以上验证)。
对于Linux下的Jenkins(任何VM linux都可以),我可以提出以下建议:
nohup xfreerdp -g DESKTOP_RES -u USER -p PASSWD --ignore-certificate WIN_VM_IP
在我们的设置中,我们有一个python脚本,它在Win测试之前为所有Win VM建立RDP,它从jenkins获取Win VM节点列表,对于每个Win VM节点,它尝试建立RDP并将其保留在后台(nohup) :
for i in WinVM:
for retry in range(0,3):
try:
ip=get_IP_from_WinVM(i)
print('RDP for: '+i+' ip:'+ip)
proc=Popen(['nohup','xfreerdp','-g',args.res,'-u',args.user,'-p',args.pwd,'--ignore-certificate',ip], stdout=PIPE, stdin=PIPE,stderr=PIPE )
proc.stdin.write('y')
except Exception as e:
print(e)
print("Retrying RDP connection for "+i)
else:
break