由于需要写自动化代码发送http请求访问windows domain的站点,然而登陆的方式与Form表单不一样,所以需要借助第三方的类库来协助,由于使用了NTLM所以要下载python NTLM相关类库进行安装。只要实现window 域账户身份认证,采用python编程语言,就可以完成对该站进行开发自动化脚本或者是性能测试脚本。
https://www.python.org/downloads/release/python-2715/
https://github.com/requests/requests-ntlm
下载后进入相应的目录,运行命令进行安装requests-ntlm
https://github.com/jborean93/ntlm-auth
下载后进入相应的目录,运行命令进行安装ntlm-auth
https://pypi.python.org/pypi/cryptography
下载后进入相应的目录,运行命令进行安装cryptography
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import requests
from requests_ntlm import HttpNtlmAuth
session = requests.Session() #自动处理cookies
session.auth = HttpNtlmAuth('music\\liudehua','andyliu')
r = session.get("http://10.190.130.85:8004")
c = session.get("http://10.190.130.85:8004/Case/Enquiry/Index?caseID=8702962")
print('cookie1: '+session.cookies['fans.music.CookieC1'])
print('cookie2: '+session.cookies['fans. music.CookieC2'])
print(c.text)
在实践过程也并非一切顺利,由于代码中添加注释,运行编码时会遇到SyntaxError: Non-ASCII character的问题。
异常信息:
File "D:\AutoRunner\NtlmDemo\com\ntlm\http\__init__.py", line 5
SyntaxError: Non-ASCII character '\xe8' in file D:\AutoRunner\NtlmDemo\com\ntlm\http\__init__.py on line 5, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
原因:
由于代码中加入了 #自动处理cookies的注释,到时运行是错误,修改设置运行的编码。
参考资料:http://python.org/dev/peps/pep-0263/ for details
解决方法:在代码中加入#-*- coding:utf-8 -*-