python脚本之发请求

上一篇 / 下一篇  2013-07-30 16:36:48 / 个人分类:python

我为什么会去学python
我本来负责的是客户端的测试任务,尝试过QTP winrunner都没有解决我客户端产品自动化测试的问题(directUI还不知道怎么识别,先前的员工也木有这方面的经验)。看着web端自动化测试慢慢开始有进展,心里很着急,去年公司来了新员工用python做web自动化测试。可能是出于好奇,也看了python,语法还没有看完就看不下去了。今年3月份有个比较繁琐的工作,就是给你一个CourseID号,让你发一个连接给服务器加密这个课程,还要两台服务器都加密。当时我用vbs试过,但是有一部分工作仍需手动,因为这个工作后期移交客服管理,我说我有个脚本可以解决,我介绍了下我的vbs脚本,人家一句“要是前面那步也能自动生成就好了”,顿时让我有所思,有所气,哈,“前面那步”就是由课程id找到里面的课件id,我原来都会手动firebug里获取,实际想想,这个是很麻烦。O(∩_∩)O哈!不过这也难不倒我了,我想起web自动化的同学给我们看过的他的脚本有post请求,所以我拿来看,虽然只是个登录的例子,但是任何网站操作大多从登录开始,就这样我开始了我的第一个python脚本。遇到问题就查书,json结构中的一些数据的获取我就是查的书。
 
怎么学python?
只看书敲书上的例子,真的很难学下去,对我而言是这样,我喜欢解决问题的成就感,我也感谢自己有一颗想自动化的心,在我看来,自动化也不必是一个框架,只要将你从繁琐重复的工作中解脱出来,就是ok的,尝试下没有什么不好。先看懂别人的再自己尝试写一下。
 
脚本:
登录
import urllib,urllib2
import hashlib
 
def build_request(req_url,req_data):
    post_data=urllib.urlencode(req_data)
    req=urllib2.Request(req_url,post_data)
   
    return req

def login(usr,pwd):
    h = hashlib.md5()
    h.update(pwd)#有些网站的登录密码在请求里是md5值
    md5_pwd = h.hexdigest()
    login_url='http://“is your website”/login.do?'#
    data={
        'ajax':'true',
        'isPopUp':False,
        'jsonp':'ablesky_'+get_ts(),
        'j_username':usr,
        'j_password':md5_pwd,
        'acegi_save_account':'on',
        '_acegi_security_remember_me':'off',
        '_':get_ts()
        }
    req=build_request(login_url,data)
    req.add_header('Referer',login_url)
    resp=urllib2.urlopen(req)
    return resp
 
上面的请求是firebug里的请求,为了安全,我把我们的域名隐掉了,可以从login.do后看。这是一个完整的登录请求,login_url 这个变量是为了后面发请求参数传递简单点,data就是连接里后面的内容,从firebug里你可以看该请求展开后的params,里面会有列出。_=137517529066这是个随机数,我单写了个get_ts()去生成。
 
然后生成请求req=build_request(login_url,data),这个我单独写了个函数,不用函数也可以。    req.add_header('Referer',login_url)
resp=urllib2.urlopen(req)
然后就完成了可以尝试运行下看下结果

TAG: 请求 Python 登录 python

 

评分:0

我来说两句

Open Toolbar