背景:
使用selenium开发相关自动化模块时,遇到一个网页需要进行用户认证,如下图所示
需要登录认证后才能进行后续操作。
解决思路:
面对这个弹窗,第一时间想到的是js的prompt弹窗,于是尝试使用webdriver.switch_to_alert()方法对其进行操作,出现如下报错提示:
显然,这个弹窗不属于常规prompt弹窗,无法通过alert对象操作;
经查询资料,得知此认证窗口为HttpBasicAuth请求鉴权时的提示框,从网络分析中也可以看到此时连接未完成,服务端在等待认证;
由此可以从主动提供用户密码这个思路着手,跳过这个认证提示;
查询资料,了解到http协议是可以直接携带用户名密码的,尝试在跳转页面时使用带用户名密码的链接访问:http://username:password@host:port/path/query
username="admin"
passwd="123"
web.get(f"https://{username}:{passwd}@192.168.xx.xx/Index.html")
成功跳过授权弹窗,直接登录到页面,问题解决!