我正在尝试自动化网站的测试脚本
我有以下错误
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 :(得分: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")