我在Windows上运行了Robotframework/Selenium测试,为了处理弹出窗口,我使用了一个简单的AutoItLibrary发送键。
问题是,如果我打开远程桌面(远程虚拟机),一切正常工作,但如果我最小化或关闭远程VM窗口,发送键停止工作。
我可以在脚本发送密钥之后离开机器,剩下的测试就会进行得很顺利。
我该如何处理这种情况?我不想看每一个运行的测试来发送证书。
示例:
Login Windows Authentication
[Documentation] Windows Authentication using
Send ${USERNAME}
Send {TAB}
Send ${PASSWORD}
Send {ENTER}我也尝试过,但没有成功:
http://user:password@example.com谢谢。
发布于 2017-07-18 05:16:15
在windows机器中,如果您使用“管理员”执行此操作,那么我建议您创建另一个具有远程桌面权限的用户"Someuser“。
使用"Someuser“远程登录到windows机器,并从此会话登录:"Someuser“以"Administrator”身份登录,将另一个远程桌面打开到同一台计算机上。
这样,windows机器将始终作为“管理员”处于活动状态,您不应该面对这个问题!即使您关闭了"Someuser“的远程桌面。
希望能帮上忙!
发布于 2017-07-18 06:47:49
我从Windows & VM内部了解到,如果没有活动用户连接到Windows,就不会有桌面environment.This,这意味着任何与桌面/GUI交互的应用程序/服务/程序都将得不到适当的对象处理--没有菜单,没有弹出窗口,甚至屏幕截图都是空白的(这是验证上面的很好的练习)。
对于Linux下的Jenkins (任何VM都可以),我可以提出以下建议:
nohup xfreerdp -g DESKTOP_RES -u用户-p PASSWD -忽略-证书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:
breakhttps://stackoverflow.com/questions/45153988
复制相似问题