After much research and help from forums, i have the following. Using HTMLParser to parse thru html pages and then finally reaching a webpage where i have to check all the checkboxes and then click the 'Deploy' button. Used ClientForm to do this. But i am getting some HTTP version error
Expand|Select|Wrap|Line Numbers
- URL = "http://10.47.42.27:8080/cruisecontrol"
- #from urllib2 import urlopen
- from HTMLParser import HTMLParser
- import re
- import ClientForm
- import urllib2
- # Fetching links using HTMLParser
- def get_links(url):
- parser = MyHTMLParser()
- parser.feed(urlopen(url).read())
- parser.close()
- return parser.links
- # Build url for Deploy page
- def get_deploy_url():
- url = URL + "/buildresults/Poker-TTM_%s_nightly_build" % branch
- print url
- for link in get_links(url):
- if link["href"].startswith("Deploy"):
- return "%s/%s" % (URL, link["href"])
- # Build url for Destination page
- def get_destination_url():
- url = get_deploy_url()
- print url
- destination_re = re.compile(r"%s" % destination)
- for link in get_links(url):
- if destination_re.search(link["href"]):
- return "http://10.47.42.27:8080/cruisecontrol/" + link["href"]
- print link["href"]
- # Parsing HTML pages
- class MyHTMLParser(HTMLParser):
- def __init__(self, *args, **kwd):
- HTMLParser.__init__(self, *args, **kwd)
- self.links = []
- def handle_starttag(self, tag, attrs):
- if tag == "a":
- attrs = dict(attrs)
- if "href" in attrs:
- self.links.append(dict(attrs))
- def handle_endtag(self, tag):
- pass
- if __name__ == "__main__":
- # Read the branch name and the test destination to deploy on
- lines = [x.split(':') for x in open("branch_dest.txt")]
- print lines
- branch = "%s" % lines[0][1].strip()
- print branch
- destination = "%s" % lines[1][1].strip()
- print destination
- final_url = get_destination_url()
- if final_url is None:
- print "Cannot deploy here"
- else:
- print final_url
- request = urllib2.Request("%s" % final_url)
- response = urllib2.urlopen(request)
- forms = ClientForm.ParseResponse(response, backwards_compat = False)
- response.close()
- form = forms[0]
- print form
- form.find_control("all_top").items[0].selected = True
- form.find_control("client.POK_code").items[0].selected = True
- form.find_control("client.SVS_code").items[0].selected = True
- form.find_control("client.PAT_code").items[0].selected = True
- form.find_control("client.POK_code_gms").items[0].selected = True
- form.find_control("client.POK_code_gms_cpn").items[0].selected = True
- form.find_control("client.POK_code_mini").items[0].selected = True
- form.find_control("client.LTM_code").items[0].selected = True
- form.find_control("client.LTM_tot_code").items[0].selected = True
- form.find_control("client.POK_code_paradise").items[0].selected = True
- form.find_control("client.POK_code_forfun").items[0].selected = True
- form.find_control("client.POK_code_pokerheaven").items[0].selected = True
- form.find_control("client.POK_code_totalpoker").items[0].selected = True
- form.find_control("client.POK_code_las").items[0].selected = True
- form.find_control("client.POK_code_italian").items[0].selected = True
- form.find_control("client.POK_code_bulgarian").items[0].selected = True
- form.find_control("client.POK_code_finnish").items[0].selected = True
- form.find_control("client.POK_code_danish").items[0].selected = True
- form.find_control("client.POK_code_french").items[0].selected = True
- form.find_control("client.POK_code_greek").items[0].selected = True
- form.find_control("client.POK_code_german").items[0].selected = True
- form.find_control("client.POK_code_croatian").items[0].selected = True
- form.find_control("client.POK_code_polish").items[0].selected = True
- form.find_control("client.POK_code_portuguese").items[0].selected = True
- form.find_control("client.POK_code_romanian").items[0].selected = True
- form.find_control("client.POK_code_russian").items[0].selected = True
- form.find_control("client.POK_code_slovak").items[0].selected = True
- form.find_control("client.POK_code_spanish").items[0].selected = True
- form.find_control("client.POK_code_czech").items[0].selected = True
- form.find_control("client.POK_code_swedish").items[0].selected = True
- form.find_control("client.POK_code_hungarian").items[0].selected = True
- form.find_control("client.POK_code_turkish").items[0].selected = True
- form.find_control("client.POK_code_albanian").items[0].selected = True
- form.find_control("client.POK_code_austrian").items[0].selected = True
- form.find_control("client.POK_code_brazilian").items[0].selected = True
- form.find_control("all").items[0].selected = True
- print form
- ##request2 = form.click()
- try:
- response2 = urllib2.urlopen(request2)
- except urllib2.HTTPError, response2:
- pass
- print response2.geturl()
- print response2.read()
- response2.close()
Expand|Select|Wrap|Line Numbers
- Traceback (most recent call last):
- File "C:\deploy_input_clientform.py", line 65, in <module>
- response = urllib2.urlopen(request)
- File "C:\Python26\lib\urllib2.py", line 126, in urlopen
- return _opener.open(url, data, timeout)
- File "C:\Python26\lib\urllib2.py", line 397, in open
- response = meth(req, response)
- File "C:\Python26\lib\urllib2.py", line 510, in http_response
- 'http', request, response, code, msg, hdrs)
- File "C:\Python26\lib\urllib2.py", line 435, in error
- return self._call_chain(*args)
- File "C:\Python26\lib\urllib2.py", line 369, in _call_chain
- result = func(*args)
- File "C:\Python26\lib\urllib2.py", line 518, in http_error_default
- raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
- HTTPError: HTTP Error 505: HTTP Version Not Supported