输入信息后,就会正常走登陆流程:
看到如上的界面,说明登陆完成,此时Cookie什么的都已经被设定完毕,你可以把Cookie存下来,并做任何你想做的事情了。
如果你愿意研究作者的代码,你会发现其实很简单:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
info:
author:CriseLYJ
github:https://github.com/CriseLYJ/
update_time:2019-3-7
"""
import time # 用来延时
from selenium import webdriver
driver = webdriver.Chrome() # 选择浏览器,此处我选择的Chrome
QQ_NUMBER = input('请输入你的QQ号')
PASSWORD = input('请输入你的QQ密码')
driver.get('http://i.qq.com/')
driver.switch_to.frame('login_frame')
driver.find_element_by_id('switcher_plogin').click()
driver.find_element_by_name('u').clear()
driver.find_element_by_name('u').send_keys(QQ_NUMBER) # 此处输入你的QQ号
driver.find_element_by_name('p').clear()
driver.find_element_by_name('p').send_keys(PASSWORD) # 此处输入你的QQ密码
driver.execute_script("document.getElementById('login_button').parentNode.hidefocus=false;")
driver.find_element_by_xpath('//*[@id="loginform"]/div[4]/a').click()
driver.find_element_by_id('login_button').click()
time.sleep(10) # 因为我曾经是QQ会员,所以每次登陆时都会提醒我要不要再续费的弹窗...
driver.find_element_by_id('dialog_button_1').click() # 这个地方是我把那个弹窗给点击了,配合上面的延时用的,延时是等待那个弹窗出现,然后此处点击取消
btns = driver.find_elements_by_css_selector('a.item.qz_like_btn_v3') # 此处是CSS选择器
for btn in btns:
btn.click()
简单的讲,代码一共分了4个步骤,分别如下:
1.让使用者输入QQ号和密码。
2.切换浏览器焦点到登录框中,选择元素输入账号和密码。
3.为了显示登录按钮,执行了以下脚本:
driver.execute_script("document.getElementById('login_button').parentNode.hidefocus=false;")
4.点击确认按钮,完成登录。
可以看到,基于 Selenium 的自动化控制一点都不难,一旦熟悉控制流程及相应的方法后应该如鱼得水。只要你度过一开始安装 Chromedriver 时的繁琐阶段,后面代码开发时多参考他人的代码,Selenium这个自动化工具是可以被熟练掌握的。
总而言之, Awesome-python-login-model 这个模拟登陆的代码库,可以给你带来不少的便利,你可以直接基于它提供的登陆脚本开发,也可以参考这些脚本自己写一个其他网站的模拟登陆脚本,并给作者提交PR。