2010-11-03 6 views
0

J'essaie d'automatiser un script de test pour un site Webscript de test python

je l'erreur suivante

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 
+0

Et quelle est votre question? –

+0

Quelle est cette erreur imprimée à l'écran – Hulk

+0

Astuce 1. Affichez la véritable question dans le titre. "script de test python" n'est pas une question. C'est un très, très mauvais titre. Astuce 2: Formatez votre code correctement afin que l'indentation soit correcte. 3e indice: En fait, j'ai une question. Un message d'erreur n'est pas une question. À moins que vous ne preniez l'indice et ne réparez votre question, vous n'aurez peut-être pas beaucoup d'aide du tout. –

Répondre

1

Quelques suggestions qui pourraient vous aider

fonction urlencode est différent de ce que vous pensez

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

arguments de la méthode de demande sont à nouveau incorrecte

Lorsque vous effectuez cette, les données sont la charge utile de demande

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

Qu'est-ce que vous voulez faire est de vous authentifier.

Cela dépend du type de serveur d'authentification attendu. Ce qui suit sert à l'authentification de base en utilisant urllib2. Lisez les documents du module pour plus de détails.

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) 
0

Je suggère d'utiliser mécanisée. De cette façon, il y aurait moins de tracas. Votre code ressemblerait à quelque chose comme ceci

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) 

Vous pouvez également utiliser les méthodes de soumission et de .click de mechanize.

0

Si vous voulez automatiser les tests pour une application Web, vous devez utiliser sélénium et faire quelque chose comme.

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")