Skip to content

Instantly share code, notes, and snippets.

@gearheart
Created April 14, 2011 16:50
Show Gist options
  • Select an option

  • Save gearheart/919895 to your computer and use it in GitHub Desktop.

Select an option

Save gearheart/919895 to your computer and use it in GitHub Desktop.
temp selenium hack
class selenium(object):
def __init__(self, host, port, browserStartCommand, browserURL):
self.host = host
self.port = port
self.browserStartCommand = browserStartCommand
self.browserURL = browserURL
self.sessionId = None
self.extensionJs = ""
def setExtensionJs(self, extensionJs):
self.extensionJs = extensionJs
def start(self, browserConfigurationOptions=None):
start_args = [self.browserStartCommand, self.browserURL, self.extensionJs]
if browserConfigurationOptions:
start_args.append(browserConfigurationOptions)
result = self.get_string("getNewBrowserSession", start_args)
try:
self.sessionId = result
except ValueError:
raise Exception, result
def stop(self):
self.do_command("testComplete", [])
self.sessionId = None
def do_command(self, verb, args):
conn = httplib.HTTPConnection(self.host, self.port)
try:
body = u'cmd=' + urllib.quote_plus(unicode(verb).encode('utf-8'))
for i in range(len(args)):
body += '&' + unicode(i+1) + '=' + \
urllib.quote_plus(unicode(args[i]).encode('utf-8'))
if (None != self.sessionId):
body += "&sessionId=" + unicode(self.sessionId)
headers = {
"Content-Type":
"application/x-www-form-urlencoded; charset=utf-8"
}
conn.request("POST", "/selenium-server/driver/", body, headers)
response = conn.getresponse()
data = unicode(response.read(), "UTF-8")
if (not data.startswith('OK')):
raise Exception, data
return data
finally:
conn.close()
def get_string(self, verb, args):
result = self.do_command(verb, args)
return result[3:]
def get_string_array(self, verb, args):
csv = self.get_string(verb, args)
if not csv:
return []
token = ""
tokens = []
escape = False
for i in range(len(csv)):
letter = csv[i]
if (escape):
token = token + letter
escape = False
continue
if (letter == '\\'):
escape = True
elif (letter == ','):
tokens.append(token)
token = ""
else:
token = token + letter
tokens.append(token)
return tokens
def get_number(self, verb, args):
return int(self.get_string(verb, args))
def get_number_array(self, verb, args):
string_array = self.get_string_array(verb, args)
num_array = []
for i in string_array:
num_array.append(int(i))
return num_array
def get_boolean(self, verb, args):
boolstr = self.get_string(verb, args)
if ("true" == boolstr):
return True
if ("false" == boolstr):
return False
raise ValueError, "result is neither 'true' nor 'false': " + boolstr
def get_boolean_array(self, verb, args):
boolarr = self.get_string_array(verb, args)
for i, boolstr in enumerate(boolarr):
if ("true" == boolstr):
boolarr[i] = True
continue
if ("false" == boolstr):
boolarr[i] = False
continue
raise ValueError, "result is neither 'true' nor 'false': " + boolarr[i]
return boolarr
def __getattr__(self, attr):
def wrapped(*args):
return self.do_command(attr, *args)
return wrapped
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment