在某些情况下,测试过程会涉及到操作系统的重启过程,比如说测试操作系统重启后,程序的启动时间评测;这时如果操作系统设置了用户名密码的情况下,就会涉及到如何实现Windows的自动登录。
了解了手动操作的过程,自动化中如何实现呢?修改注册表......
ok,看下HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon项下,含有默认用户名、密码、是否自动登录等信息,那么只需要保存用户名密码到此项下,系统就可以自动登录了,看下代码:
def SetAutoLoginWin(username,password):
"""
| #设置window自动登录
"""
key = None
syswow = os.getenv("windir")+"\\SysWOW64"
for i in range(2):
try:
if os.path.exists(syswow):
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r"Software\Microsoft\Windows NT\CurrentVersion\Winlogon", 0, _winreg.KEY_ALL_ACCESS|win32con.KEY_WOW64_64KEY)
else:
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r"Software\Microsoft\Windows NT\CurrentVersion\Winlogon", 0, _winreg.KEY_ALL_ACCESS)
except:
pass
if key:
break
else:
_winreg.CreateKey(_winreg.HKEY_LOCAL_MACHINE,r"Software\Microsoft\Windows NT\CurrentVersion\Winlogon")
try:
_winreg.SetValueEx(key,"DefaultUserName",0,_winreg.REG_SZ,username)
_winreg.SetValueEx(key,"DefaultPassword",0,_winreg.REG_SZ,password)
_winreg.SetValueEx(key,"AutoAdminLogon",0,_winreg.REG_SZ,"1")
_winreg.SetValueEx(key,"ForceAutoLogon",0,_winreg.REG_SZ,"1")
except:
return False
return True
同样,清除自动化登录操作,也比较简单,只需要将注册表项清除掉就OK了,代码如下
#清除window自动登录
def DelAutoLoginWin():
"""
| #清除window自动登录
"""
items=("DefaultUserName","DefaultPassword","AutoAdminLogon","ForceAutoLogon")
for item in items:
DeleteRegValue(r"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon",item)
这样,自动化中涉及到需要重启的操作时,我们就可以让系统自动登录,并继续执行脚本了···
转载请注明:http://blog.csdn.net/sogouauto
探索测试奥义,交流测试技术,欢迎关注“搜狗测试”
原文:http://blog.csdn.net/sogouauto/article/details/44622099