• (二十七)WebDriver API之操作cookie


    随笔记录方便自己和同路人查阅。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,

    这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

    操作cookie

      有时候我们需要验证浏览器中cookie是否正确,因为基于真实cookie的测试是无法通过白盒和继承测试的。WebDriver提供了操作cookie的相关方法,可以读取、添加、和删除cookie信息。

      WebDriver操作cookie的方法:

      get_cookies():获得所有cookie信息。

      get_cookie(name):返回字典的key为“name”的cookie信息。

      get_cookie(cookie_dict):添加cookie。“cookie_dict”指字典对象,必须有namevalue值。

      delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选择,目前支持的选项包括“路径”,“域”。

      delete_all_cookies():删除所有cookie信息。

      下面通过get_cookies()来获取当前浏览器的cookie信息。

    #操作cookie
    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get('http://www.youdao.com')
    
    #获得cookie信息
    cookie = driver.get_cookies()
    #将获得cookie的信息打印
    print(cookie)

      结果展示:  

     

      从执行结果可以看出,cookie数据是以字典的形式进行存放的。知道了cookie的存放形式,接下来我们就可以按照这种形式向浏览器中写入cookie信息。

    #操作cookie
    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get('http://www.youdao.com')
    
    #向cookie的name和value值中添加会话信息
    cookie = driver.add_cookie({"name":"key-aaaaa","value":"value-bbbbbb"})
    #遍历cookies中的name和value值信息并打印,当然还有上年添加的信息
    for cookie in driver.get_cookies():
        print("%s -> %s" % (cookie['name'],cookie['value']))
    
    driver.quit()

      效果展示:

      从执行结果可以看到,第三天条cookie信息是在脚本执行过程中add_cookie()方法添加的。通过遍历得到所有的cookie信息,从而找到key”name”和”value”的特定cookievalue

      那么在什么情况下回用到cookie的操作呢?例如开发人员开发了一个功能,当用户登录后,会将用户的用户名写入浏览器cookie,指定key为“username”,那么我们就可以通过get_cookie()找到 username,打印value。如果找不到username或对应的value为空,那么说明cookie没有成功地保存到浏览器中。

      delete_cookie()delete_all_cookies()的使用也很简单,前者通过name删除一个特定的cookie信息,后者直接删除浏览器中的所有cookies()信息。

  • 相关阅读:
    ftp的虚拟用户的使用
    系统进程与线程
    mysql 100%占用的解决
    两张神图介绍python3和 2.x与 3.x 的区别
    python3中__get__,__getattr__,__getattribute__的区别
    Python 数据图表工具的比较
    Spark入门(Python)
    别学框架,学架构
    Python垃圾回收机制
    pyextend库-accepts函数参数检查
  • 原文地址:https://www.cnblogs.com/lirongyang/p/11459751.html
Copyright © 2020-2023  润新知