title: Converting selenium.py to python 3 by 2to3
body: <p>I'm trying to convert selenium.py written in python 2. </p>
  
  <p>As you see below I copied selenium.py to C:\Python32\Tools\Scripts> and after execution </p>
  
  <pre><code>2to3.py selenium.py
  </code></pre>
  
  <p>I see that the file is the same. What Have I done wrong? Or from where I can download this file converted?</p>
  
  <pre><code>C:\Python32\Tools\Scripts&gt;2to3.py selenium.py
  RefactoringTool: Skipping implicit fixer: buffer
  RefactoringTool: Skipping implicit fixer: idioms
  RefactoringTool: Skipping implicit fixer: set_literal
  RefactoringTool: Skipping implicit fixer: ws_comma
  RefactoringTool: Refactored selenium.py
  --- selenium.py (original)
  +++ selenium.py (refactored)
  @@ -18,8 +18,8 @@
  
   # This file has been automatically generated via XSL
  
  -import httplib
  -import urllib
  +import http.client
  +import urllib.request, urllib.parse, urllib.error
   import re
  
   class selenium:
  @@ -186,34 +186,34 @@
           self.extensionJs = extensionJs
  
       def start(self):
  -        print (self.browserURL)
  +        print((self.browserURL))
           result = self.get_string("getNewBrowserSession", [self.browserStartComm
  and, self.browserURL, self.extensionJs])
           try:
               self.sessionId = result
           except ValueError:
  -            raise Exception, result
  +            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)
  -        body = u'cmd=' + urllib.quote_plus(unicode(verb).encode('utf-8'))
  +        conn = http.client.HTTPConnection(self.host, self.port)
  +        body = 'cmd=' + urllib.parse.quote_plus(str(verb).encode('utf-8'))
           for i in range(len(args)):
  -            body += '&amp;' + unicode(i+1) + '=' + urllib.quote_plus(unicode(args[i
  ]).encode('utf-8'))
  +            body += '&amp;' + str(i+1) + '=' + urllib.parse.quote_plus(str(args[i])
  .encode('utf-8'))
           if (None != self.sessionId):
  -            body += "&amp;sessionId=" + unicode(self.sessionId)
  +            body += "&amp;sessionId=" + str(self.sessionId)
           headers = {"Content-Type": "application/x-www-form-urlencoded; charset=
  utf-8"}
           conn.request("POST", "/selenium-server/driver/", body, headers)
  
           response = conn.getresponse()
           #print response.status, response.reason
  -        data = unicode(response.read(), "UTF-8")
  +        data = str(response.read(), "UTF-8")
           result = response.reason
           #print "Selenium Result: " + repr(data) + "\n\n"
           if (not data.startswith('OK')):
  -            raise Exception, data
  +            raise Exception(data)
           return data
  
       def get_string(self, verb, args):
  @@ -255,7 +255,7 @@
               return True
           if ("false" == boolstr):
               return False
  -        raise ValueError, "result is neither 'true' nor 'false': " + boolstr
  +        raise ValueError("result is neither 'true' nor 'false': " + boolstr)
  
       def get_boolean_array(self, verb, args):
           boolarr = self.get_string_array(verb, args)
  @@ -266,7 +266,7 @@
               if ("false" == boolstr):
                   boolarr[i] = False
                   continue
  -            raise ValueError, "result is neither 'true' nor 'false': " + boolar
  r[i]
  +            raise ValueError("result is neither 'true' nor 'false': " + boolarr
  [i])
           return boolarr
  
  
  RefactoringTool: Files that need to be modified:
  RefactoringTool: selenium.py
  
  C:\Python32\Tools\Scripts&gt;2to3.py selenium.py
  RefactoringTool: Skipping implicit fixer: buffer
  RefactoringTool: Skipping implicit fixer: idioms
  RefactoringTool: Skipping implicit fixer: set_literal
  RefactoringTool: Skipping implicit fixer: ws_comma
  RefactoringTool: Refactored selenium.py
  --- selenium.py (original)
  +++ selenium.py (refactored)
  @@ -18,8 +18,8 @@
  
   # This file has been automatically generated via XSL
  
  -import httplib
  -import urllib
  +import http.client
  +import urllib.request, urllib.parse, urllib.error
   import re
  
   class selenium:
  @@ -186,34 +186,34 @@
           self.extensionJs = extensionJs
  
       def start(self):
  -        print (self.browserURL)
  +        print((self.browserURL))
           result = self.get_string("getNewBrowserSession", [self.browserStartComm
  and, self.browserURL, self.extensionJs])
           try:
               self.sessionId = result
           except ValueError:
  -            raise Exception, result
  +            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)
  -        body = u'cmd=' + urllib.quote_plus(unicode(verb).encode('utf-8'))
  +        conn = http.client.HTTPConnection(self.host, self.port)
  +        body = 'cmd=' + urllib.parse.quote_plus(str(verb).encode('utf-8'))
           for i in range(len(args)):
  -            body += '&amp;' + unicode(i+1) + '=' + urllib.quote_plus(unicode(args[i
  ]).encode('utf-8'))
  +            body += '&amp;' + str(i+1) + '=' + urllib.parse.quote_plus(str(args[i])
  .encode('utf-8'))
           if (None != self.sessionId):
  -            body += "&amp;sessionId=" + unicode(self.sessionId)
  +            body += "&amp;sessionId=" + str(self.sessionId)
           headers = {"Content-Type": "application/x-www-form-urlencoded; charset=
  utf-8"}
           conn.request("POST", "/selenium-server/driver/", body, headers)
  
           response = conn.getresponse()
           #print response.status, response.reason
  -        data = unicode(response.read(), "UTF-8")
  +        data = str(response.read(), "UTF-8")
           result = response.reason
           #print "Selenium Result: " + repr(data) + "\n\n"
           if (not data.startswith('OK')):
  -            raise Exception, data
  +            raise Exception(data)
           return data
  
       def get_string(self, verb, args):
  @@ -255,7 +255,7 @@
               return True
           if ("false" == boolstr):
               return False
  -        raise ValueError, "result is neither 'true' nor 'false': " + boolstr
  +        raise ValueError("result is neither 'true' nor 'false': " + boolstr)
  
       def get_boolean_array(self, verb, args):
           boolarr = self.get_string_array(verb, args)
  @@ -266,7 +266,7 @@
               if ("false" == boolstr):
                   boolarr[i] = False
                   continue
  -            raise ValueError, "result is neither 'true' nor 'false': " + boolar
  r[i]
  +            raise ValueError("result is neither 'true' nor 'false': " + boolarr
  [i])
           return boolarr
  
  
  RefactoringTool: Files that need to be modified:
  RefactoringTool: selenium.py
  </code></pre>