最近在学习基于python的selenium webdriver时遇到这样一个问题:
一个弹出式的基本接入认证页面,需要输入用户名和密码然后点击确定才可以完成认证的过程。
示例页面地址:
http://pythonscraping.com/pages/auth/login.php
默认的用户名和密码分别为ryan和password。
分别尝试了以下几种方法,不是太繁琐就是不成功:
-
用AutoIt编写脚本并编译生成.exe文件,然后再在代码里调用,这个方法太繁琐;
-
使用python的requests库中的方法,这个没办法在界面上进行处理;
-
selenium中Alert对象的authenticate方法,这个方法在调用时总是出错,原因不明;
-
使用selenium的Options类中的add_argument方法添加header;
最后经人指点,直接在使用selenium的get方法访问页面的时候,在url中添加用户名和密码,也就是《http权威指南》一书中2.2.3章节中关于用户名和密码组件的介绍中所说的,在访问一个需要用户名和密码才能访问的页面可以使用如下方式:
http://username:password@ip:port/path
具体的python代码如下:
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://ryan@password@pythonscraping.com/pages/auth/login.php")
认证成功后的页面如下: