zoukankan      html  css  js  c++  java
  • Splinter学习--初探3,两种方式登录QQ邮箱

    目前,qq邮箱的登录方式有:

    1、利用账号、密码登录

    2、快捷登录,前提是你本地已有qq账号登录中

    和前面一样,还是先到qq邮箱登录首页,审查页面元素,找到我们进行登录操作所相关的链接、按钮或是输入框。

    QQ邮箱登录首页:https://mail.qq.com/

    打开登录页,可以看到两种登录方式选择,如下图:

       

    审查页面元素,发现快速登录方式,对应ID为“qlogin_list“的一个div,而账号、密码登录方式对应ID为“web_login”的一个div,且这两个div元素都位于ID为“login_frame"的iframe的内嵌html中,如下:

    对于快速登录方式,若当前已有qq账号在登录中,在"qlogin_list"下会有一个<a>链接元素,否则没有,因此通过对于该元素的判断,可以实现优先选择快速登录方式,直接点击该链接即可。

    对于账号、密码登录,方法同博客园登录一样,找到用户名、密码的对应元素,实现填充后点击登录按钮即可。

    登录成功后,可通过browser对象的cookies属性获取当前cookie。Splinter有一个CookieManager对象,该对象为dict类型,并持有添加、删除cookie的方法,具体如下:

    cookie_manager.add({'name': 'Tony'})    # 增加一个cookie

    cookie_manager.all()   # 获取所有cookie

    cookie_manager.delete()  # 删除所有cookie
    cookie_manager.delete('name', 'birthday','favorite_color')  # 删除这三个cookie
    cookie_manager.delete('name')  # 删除一个cookie,cookie的名字为“name”

    Splinter为Browser对象提供了get_iframe()方法,用于获取iframe,可通过iframe相关的id,name, 或是index进行查找。

    具体参考代码如下:

     1 def qq_mail_login(username=None, password=None):
     2     """
     3     模拟登录QQ邮箱,账号密码登录
     4     :param username:
     5     :param password:
     6     :return:
     7     """
     8 
     9     url = "https://mail.qq.com/"
    10     browser = Browser()
    11     browser.visit(url)
    12     time.sleep(5)
    13 
    14     with browser.get_iframe("login_frame") as iframe:
    15         '''
    16         if username is None and password is None:
    17             # 切换到"快速登录"
    18             div = iframe.find_by_id("qlogin_list").first
    19             div.find_by_xpath("a")[0].click()
    20         else:
    21             # 利用账号,密码登录
    22             iframe.find_by_id("u").first.fill(username)
    23             iframe.find_by_id("p").first.fill(password)
    24             iframe.find_by_id("login_button").first.click()
    25         '''
    26         # 优先选择"快速登录"
    27         div = iframe.find_by_id("qlogin_list").first
    28         try:
    29             quick_href = div.find_by_xpath("a")
    30             quick_href.first.click()
    31         except exceptions.ElementDoesNotExist, e:
    32             print e.message
    33             # 利用账号,密码登录
    34             iframe.find_by_id("u").first.fill(username)
    35             iframe.find_by_id("p").first.fill(password)
    36             iframe.find_by_id("login_button").first.click()
    37         time.sleep(10)
    38 
    39     for k, v in browser.cookies.all().iteritems():
    40         print k, ":", v
    qq_mail_login

     

  • 相关阅读:
    简单的jQuery无缝向上滚动效果
    http://yuanma.wxb0.com/ 唯品源码网站
    vue.js 2.0 --- 安装node环境,webpack和脚手架
    记住密码后,密码框Password会自动带出数据
    http://ask.dcloud.net.cn/question/11695 nativeUI的使用(移动的)
    微信内置浏览器 如何小窗不全屏播放视频?
    webstrom快捷键
    6个html5页面适配iphone6的技巧
    rem的js
    docker打包容器成镜像文件、镜像文件加载到镜像
  • 原文地址:https://www.cnblogs.com/java-wgm/p/5177754.html
Copyright © 2011-2022 走看看