解决问题:每次密码都是变化的,无法通过账号密码登录
(总不能每次去fiddler复制吧????)
解决思路:
1.先用selenium调用浏览器(不会selenium的自己想办法了),
2.登录后从浏览器里面抓取cookies
3.把cookies传给s
4.这样就成功成功了
如果登录有验证码怎么办?比如:博客园
参考这篇:http://www.cnblogs.com/yoyoketang/p/8610779.html

每次都会启动浏览器界面,不想看到浏览器启动怎么办?
解决办法1:用chrome的headless模式 
http://www.cnblogs.com/yoyoketang/p/8078873.html
解决办法2:用phantomjs浏览器(不建议,坑多)

from selenium import webdriver
import requests
import time
driver = webdriver.Firefox()

url = 'http://127.0.0.1/zentao/user-login.html'
driver.get(url)
# 先登录
driver.find_element_by_id("account").send_keys("admin")
driver.find_element_by_name("password").send_keys("123456")
driver.find_element_by_id("keepLoginon").click() # 勾选保持登录
driver.find_element_by_id("submit").click()

time.sleep(3)
allcookies = driver.get_cookies()  # 获取浏览器cookies
print("获取到登录后的cookies:%s" % allcookies)

# 把抓取的cookies添加到s中
s = requests.session()

def add_cookies(allcook):
    '''往session添加cookies'''
    try:
       
# 添加cookies到CookieJar
        c = requests.cookies.RequestsCookieJar()
       
for i in allcook:
           
c.set(i["name"], i['value'])

s.cookies.update(c# 更新session里cookies
    except Exception as msg:
       
print(u"添加cookies的时候报错了:%s" % str(msg))
# 调用添加cookies函数
add_cookies(allcookies)

print("打印s里面是否添加成功了")
print(s.cookies)
# 访问一个登录之后的页面,看是不是能访问了
r1 = s.get("http://127.0.0.1/zentao/my/")
print(r1.content.decode("utf-8"))

python接口自动化测试十五:解决密码动态,无法登录情况的更多相关文章

  1. python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为

    python接口自动化测试二十七:密码MD5加密   ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...

  2. python 接口自动化测试(五)其他-认证&代理&超时配置

    有了前面几节的介绍,基本的接口测试是可以满足了.本节一些其它的高级技巧: 一.认证 1.基本认证: # -*- coding:utf-8 -*- import requests url = " ...

  3. python接口自动化测试十九:函数

    # 函数 a = [1, 3, 6, 4, 85, 32, 46]print(sum(a)) # sum,求和函数 def add(): a = 1, b = 2, return a + bprint ...

  4. python接口自动化测试十八:使用bs4框架爬取图片

    # 爬图片# 目标网站:http://699pic.com/sousuo-218808-13-1.htmlimport requestsfrom bs4 import BeautifulSoupimp ...

  5. python接口自动化测试十六:unittest完成用例

    import unittestimport requests def add(a, b): print('前置条件!!!!!:如登录') return a + b class TestAAA(unit ...

  6. python接口自动化测试十四: 用正则表达式提取数据

    import requests import re url = 'xxxx' r = requests.post(url) # 正则公式: postid = re.findall(r"(.+ ...

  7. python接口自动化测试十二:对返回的json的简单操作

    # 1.requests里面自带解析器转字典 print(r.json()) print(type(r.json())) # 取出json中的'result_sk_temp'字段 # {"r ...

  8. python接口自动化测试十:字典、字符串、json之间的简单处理

    # 字典 t = { #   键:值     '': '',     '': ''     } # 字典 # dict      key: value   key是唯一的,无序的 h = {      ...

  9. python接口自动化测试二十七:密码MD5加密

    # MD5加密 # 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import hashlib def MD5(str): # 创建md5对象 hl ...

随机推荐

  1. Java_Mybatis_注解代理写法

    Mybatis的开发方式其实有3种: 1. 原始Dao开发(就是把mapper接口.映射文件和实现类都一并开发) 2. xml代理(就是只实现mapper接口和映射文件) 3.注解代理(就是只实现ma ...

  2. EXISTS 与 NOT EXISTS 的用法及返回结果

    (1)SELECT * FROM `datatower-all`.TMP_DWD_POI t1 WHERE EXISTS ( SELECT 1 FROM `datatower-all`.DWD_POI ...

  3. 设计模式---组件协作模式之模板方法模式(Tempalte Method)

    前提:组件协作模式 现代软件专业分工之后的第一个结构是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常见的模式. 我们常常使用框架来写自己的 ...

  4. C# 多线程辅助类实现多任务

    1)首先实现一个多线程的辅助类,代码如下: public class ThreadMulti { public delegate void DelegateComplete(); public del ...

  5. Ant基础知识2

    Ant: 1.在windows上搭建Ant环境,成功后查看版本号 答案: (1)安装jdk,配置环境变量 (2)安装ant,配置环境变量,添加ANT_HOME,在path中加入%ANT_HOME%\b ...

  6. Jupyter 魔术命令(magic commands)

    自动重新加载更改的模块 命令参数如下所示: %autoreload: 自动重载%aimport排除的模块之外的所有模块. %autoreload 0: 禁用自动重载 %autoreload 1: 自动 ...

  7. Java基础编程题——素数

    package com.yangzl.basic; /** * 判断101-200之间有多少个素数,并输出所有素数. * @author Administrator * */ /*程序分析:判断素数的 ...

  8. WF控制台工作流(2)

    using System; using System.Linq; using System.Activities; using System.Activities.Statements; namesp ...

  9. Linux - iptable 限制 IP 访问端口

    iptable 设置iptables 限制特定IP 访问: -A INPUT -s 172.16.2.20 -p tcp -j ACCEPT-A INPUT -s -p tcp -j ACCEPT 设 ...

  10. 第16月第5天 performSelector afterDelay cancel dispatch_semaphore_wait

    1. //不延时,可能会导致界面黑屏并卡住一会 [self performSelector:@selector(startScan) withObject:nil afterDelay:0.3]; - ...