python测试脚本

时间:2010-11-03 09:14:11

标签: python

我正在尝试自动化网站的测试脚本

我有以下错误

    import urllib , urllib2 , cookielib , random ,datetime,time,sys


  cookiejar = cookielib.CookieJar() 
  urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
  urllib2.install_opener(urlOpener)


  username=username.strip()

  values = {'username': username, 'password': 'password'}  #user input

  data = urllib.urlencode(values)

 request = urllib2.Request('http://141.168.25.182/',data)

 url = urlOpener.open(request)


    File "<stdin>", line 1, in ?
 File "/usr/lib/python2.4/urllib2.py", line 364, in open
response = meth(req, response)
File "/usr/lib/python2.4/urllib2.py", line 471, in http_response
response = self.parent.error(
File "/usr/lib/python2.4/urllib2.py", line 402, in error
return self._call_chain(*args)
File "/usr/lib/python2.4/urllib2.py", line 337, in _call_chain
result = func(*args)
File "/usr/lib/python2.4/urllib2.py", line 480, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden

3 个答案:

答案 0 :(得分:1)

一些可能对您有帮助的建议

urlencode功能与您的想法不同

>>> from urllib import urlencode
>>> values = {'username': 'username', 'password': 'password'}
>>> data = urlencode(values)
>>> data
'username=username&password=password'
>>> 

请求方法参数再次不正确

执行此操作时,数据是请求有效负载

request = urllib2.Request('http://141.168.25.182/',data)

您要做的是验证自己。

这取决于认证服务器的预期类型。以下用于使用urllib2进行基本身份验证。阅读模块文档以获取更多详细信息。

import urllib2
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(user='..', passwd='...')
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
urllib2.urlopen('url)

答案 1 :(得分:0)

我建议使用机械化。这样就不那么麻烦了。您的代码看起来像这样

import mechanize
base_url = "http://someurl"
login_url = base_url + "/login"
protected_url = base_url + "/potected"
b = mechanize.Browser()
b.visit(login_url)
b.add_password(base_url, "user", "secret", "some Realm")
b.open(login_url) 
b.open(protected_url)

您还可以使用mechanize的表单提交和.click方法。

答案 2 :(得分:0)

如果您想自动化Web应用程序的测试,您应该使用selenium并执行类似的操作。

from selenium import webdriver

# Create an instance of a browser
browser = webdriver.Firefox()

# Open homepage
browser.get("http://141.168.25.182")

# Find username and password fields (i do not know what ids your input fields actually have)
username_input = browser.find_element_by_id("username")
password_input = browser.find_element_by_id("password")

# Fill in username and password fields
username_input.send_keys("test_username")
password_input.send_keys("test_password")

# Find and click on the login button
browser.find_element_by_id("login").click()

# Check that you are signed in by finding a sign out button
browser.find_element_by_id("signout")