【问题标题】:Converting selenium.py to python 3 by 2to3通过 2to3 将 selenium.py 转换为 python 3
【发布时间】:2011-07-26 20:58:03
【问题描述】:

我正在尝试转换用 python 2 编写的 selenium.py。

如下所示,我将 selenium.py 复制到 C:\Python32\Tools\Scripts> 并在执行后

2to3.py selenium.py

我看到文件是一样的。我做错了什么?或者我可以从哪里下载这个转换后的文件?

C:\Python32\Tools\Scripts>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 += '&' + unicode(i+1) + '=' + urllib.quote_plus(unicode(args[i
]).encode('utf-8'))
+            body += '&' + str(i+1) + '=' + urllib.parse.quote_plus(str(args[i])
.encode('utf-8'))
         if (None != self.sessionId):
-            body += "&sessionId=" + unicode(self.sessionId)
+            body += "&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>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 += '&' + unicode(i+1) + '=' + urllib.quote_plus(unicode(args[i
]).encode('utf-8'))
+            body += '&' + str(i+1) + '=' + urllib.parse.quote_plus(str(args[i])
.encode('utf-8'))
         if (None != self.sessionId):
-            body += "&sessionId=" + unicode(self.sessionId)
+            body += "&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

【问题讨论】:

  • 2to3 正在输出需要以差异形式完成的更改。寻找一些将更改的输出直接发送到文件的选项

标签: python selenium python-3.x python-2to3


【解决方案1】:

这在 2to3 实用程序的官方文档中有所介绍:http://docs.python.org/library/2to3.html

默认情况下,它只打印差异以供查看(并可能保存为补丁)。

您必须提供-w 选项才能真正覆盖原始文件。

【讨论】:

  • 跳过隐式修复程序是什么意思?它是在告诉我出于某种原因不需要做的事情,还是告诉我我需要做某事?
  • 查看代码和文档,我认为该消息实际上有点误导 - 它报告的 optional 修复程序只有在命令行上明确命名时才会运行。
  • 我认为这是明确的修复程序。我也很困惑:)
  • 我提交了一个关于奇怪措辞的错误:bugs.python.org/issue22064 没有承诺是否/何时会得到修复 :)
猜你喜欢
  • 2011-01-27
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多