• cookie处理


    有时候我们需要验证浏览器中是否存在某个 cookie,因为基于真实的 cookie 的测试是无法通过白盒和集成测试完成的。webdriver 可以读取、添加和删除 cookie 信息。webdriver 操作 cookie 的方法有:

    • get_cookies() 获取cookie信息
    • get_cookie(name) 返回特定name 有cookie 信息
    • add_cookie(cookie_dict) 添加 cookie,必须有 name 和 value 值
    • 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()

    对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()

    运行打印信息:

    获取对象的属性

    获取测试对象的属性能够帮我们更好的进行对象的定位,比如页面上很多标签为input 元素,而我们需要定位其中 1 个有具有 data-node 属性不一样的元素。由于 webdriver 是不支持直接使用 data-node 来定位对象的所以我们只能先把所有标签为 input 都找到,然后遍历这些 input,获取想要的元素

    <input type="checkbox" data-node="594434499" data-convert="1" data-type="file">
    <input type="checkbox" data-node="594434498" data-convert="1" data-type="file">
    <input type="checkbox" data-node="594434493" data-convert="1" data-type="file">
    <input type="checkbox" data-node="594434497" data-convert="1" data-type="file">

    通过 find_elements 获得一组元素,通过循环遍历打到想要的元素

    # 选择页面上所有的 tag name 为 input 的元素
    inputs = driver.find_elements_by_tag_name('input')
    #然后循环遍历出 data-node 为594434493的元素,单击勾选
    for input in inputs:
    if input.get_attribute('data-node') == '594434493':
    input.click()
    ……
  • 相关阅读:
    希尔排序
    Java内存区域与内存溢出异常
    插入排序
    选择排序
    冒泡排序
    专利申请笔记
    Python基础指北
    mini web
    linux i/o multiplexing
    Python decorator module
  • 原文地址:https://www.cnblogs.com/zhang-jun-jie/p/9313967.html
Copyright © 2020-2023  润新知