zoukankan      html  css  js  c++  java
  • selenium-webdriver(python) (十三) -- cookie处理

     

    本节重点:

    • driver.get_cookies() 获得cookie信息
    • add_cookie(cookie_dict)  向cookie添加会话信息
    • delete_cookie(name)   删除特定(部分)cookie
    • delete_all_cookies()    删除所有cookie

     

    通过webdriver 操作cookie 是一件非常有意思的事儿,有时候我们需要了解浏览器中是否存在了某个cookie 信息,webdriver 可以帮助我们读取、添加,删除cookie信息。

     

     

    打印cookie信息

     

    #coding=utf-8
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    driver.get("http://www.youdao.com")
    
    # 获得cookie信息
    cookie= driver.get_cookies()
    
    #将获得cookie的信息打印
    print cookie
    
    driver.quit()

    运行打印信息:

    [{u'domain': u'.youdao.com', u'secure': False, u'value': u'aGFzbG9nZ2VkPXRydWU=', u'expiry': 1408430390.991375, u'path': u'/', u'name': u'_PREF_ANONYUSER__MYTH'}, {u'domain': u'.youdao.com', u'secure': False, u'value': u'1777851312@218.17.158.115', u'expiry': 2322974390.991376, u'path': u'/', u'name': u'OUTFOX_SEARCH_USER_ID'}, {u'path': u'/', u'domain': u'www.youdao.com', u'name': u'JSESSIONID', u'value': u'abcUX9zdw0minadIhtvcu', u'secure': False}]

     

     

    对cookie的操作

     

    上面的方式打印了所有cookie信息表,太多太乱,我们只想有真对性的打印自己想要的信息,看下面的例子

    #coding=utf-8
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Firefox()
    driver.get("http://www.youdao.com")
    
    
    #向cookie的name 和value添加会话信息。
    driver.add_cookie({'name':'key-aaaaaaa', 'value':'value-bbbb'})
    
    #遍历cookies中的name 和value信息打印,当然还有上面添加的信息
    for cookie in driver.get_cookies():
        print "%s -> %s" % (cookie['name'], cookie['value'])
    
    
    # 下面可以通过两种方式删除cookie
    # 删除一个特定的cookie
    driver.delete_cookie("CookieName")
    # 删除所有cookie
    driver.delete_all_cookies()
    
    time.sleep(2)
    driver.close()

    运行打印信息:

    YOUDAO_MOBILE_ACCESS_TYPE -> 1
    _PREF_ANONYUSER__MYTH -> aGFzbG9nZ2VkPXRydWU=
    OUTFOX_SEARCH_USER_ID -> -1046383847@218.17.158.115
    JSESSIONID -> abc7qSE_SBGsVgnVLBvcu
    key-aaaaaaa -> value-bbbb  # 这一条是我们自己添加的

    通过博客园登陆来分析cookie

     

    #coding=utf-8
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Firefox()
    driver.get("http://passport.cnblogs.com/login.aspx?ReturnUrl=http://www.cnblogs.com/fnng/admin/EditPosts.aspx")
    
    time.sleep(3)
    driver.maximize_window() # 浏览器全屏显示
    
    #通过用户名密码登陆
    driver.find_element_by_id("tbUserName").send_keys("fnngj")
    driver.find_element_by_id("tbPassword").send_keys("123456")
    
    #勾选保存密码
    driver.find_element_by_id("chkRemember").click()
    time.sleep(3)
    #点击登陆按钮
    driver.find_element_by_id("btnLogin").click()
    
    #获取cookie信息并打印
    cookie= driver.get_cookies()
    print cookie
    
    time.sleep(2)
    driver.close()

    运行打印信息:

    #第一次执行信息
    >>> 
    [{u'domain': u'.cnblogs.com', u'name': u'.DottextCookie', u'value': u'C709F15A8BC0B3E8D9AD1F68B371053849F7FEE31F73F1292A150932FF09A7B0D4A1B449A32A6B24AD986CDB05B9998471A37F39C3B637E85E481AA986D3F8C187D7708028F9D4ED3B326B46DC43B416C47B84D706099ED1D78B6A0FC72DCF948DB9D5CBF99D7848FDB78324', u'expiry': None, u'path': u'/', u'secure': False}]
    >>> ========================= RESTART ================================
    #第二次执行信息
    >>> 
    [{u'domain': u'.cnblogs.com', u'name': u'.DottextCookie', u'value': u'5BB735CAD62E99F8CCB9331C32724E2975A0150D199F4243AD19357B3F99A416A93B2E803F4D5C9D065429713BE8B5DB4ED760EDCBAF492EABE2158B3A6FBBEA2B95C4DA3D2EFEADACC3247040906F1462731F652199E2A8BEFD8A9B6AAE87CF3059A3CAEB9AB0D8B1B7AD2A', u'expiry': 1379502502, u'path': u'/', u'secure': False}]
    >>> 

     

    第一次注释掉勾选保存密码的操作,第二次通过勾选保存密码获得cookie信息 ;来看两次运行结果的cookie的何不同:

    u'expiry': None

    u'expiry': 1379502502

    通过对比发现,不勾选保存密码时expiry 的值为none ; 那么就可以初步判断勾选保存密码的操作在cookie 中起到了作用。至于是否准确可以再做进一步的分析。

     

     

     

     

     

  • 相关阅读:
    Android 主题theme说明 摘记
    Android开发 去掉标题栏方法 摘记
    安卓项目五子棋代码详解(二)
    关于 ake sure class name exists, is public, and has an empty constructor that is public
    百度地图3.0实现图文并茂的覆盖物
    android onSaveInstanceState()及其配对方法。
    关于集成科大讯飞语音识别的 一个问题总结
    android 关于 webview 控制其它view的显示 以及更改view数据失败的问题总结
    C# 解析 json Newtonsoft果然强大,代码写的真好
    c#数据类型 与sql的对应关系 以及 取值范围
  • 原文地址:https://www.cnblogs.com/fnng/p/3269450.html
Copyright © 2011-2022 走看看