最近在搞单位的项目,实现python自动化,结果在第一步就把我给拒之门外。
查资料问大佬,问我们开发人员,从周一折腾到周五才搞定了。
接下给大家分享一下:
项目背景:我们系统是基于Windows平台实现的,登录方式为Windows身份认证
1
Web端登录方式,selenium模块实现
原来想用selenium实现,web端可不可以用WinSpy先定位在使用pywin32实现呢,尝试一下发现,WinSpy这个工具根本定位不到我的登录窗口,整个黑色的定位框无法定位登录弹窗。
网上说的Autoit这种方式估计和这个类似,都是操作Windows窗口,咱也不会,没研究明白.
如图:
中间还想过使用requests库请求,获取cookie(就是下面的第二中方法)的方式来实现.
requests库发起请求,返回请求头中的Set-Cookie,利用Set-Cookie中的sessionid以及其他的必填参数来实现Windows身份认证。
selenium中的webdriver发起请求时,将sessionid等一系列的参数带上,使用这种方法来实现Windows认证.
可是还是不行,直接报错,说是无效的cookie域,具体报错信息如下:
web这种方式更是奇葩,一遍一遍的翻阅着百度、必应等搜索网站,期间我的同学L姐一直陪伴着我,帮助我解决问题,包括执行的步骤,截图、录像都用上了,最后的最后终于是搞定了.
接下来给大家说一下,以后有同学遇到Windows身份认证了,可以使用这种方式进行登录认证。
其实很简单的原理,也看到过有帖子再说这种方法,就是将用户名和密码写到url中,可是当时我没有成功,关键在于特殊字符。
语法为:http://username:password@url
实现代码如下,举个栗子:
这里千万注意,如果你的username,password里边含有特殊字符。
如:!@#¥%……&*等等,一定要转换为UrlEncode格式,不然肯定登录不成功,一把血泪史呀
在这里特别感谢我L姐,没有她我也解决不了这个问题
提供一个转码的网址:
https://tool.chinaz.com/tools/urlencode.aspx
例如:“admin@1234”这个字符串,转码后为:
2
采用Python中的requests库实现Windows身份认证登录
首先安装requests库,requests_ntlm库
Windows身份登录
举个例子:
登录成功,并且可以得到header请求头,sessionid等等一些信息
本文为柠檬班Python20期麦穗的学员笔记!希望能对你的学习之路有帮助呦~
关注微信公众号
领取100G测试资料
让软件测试学习变得更简单!
文章评论