Selenium webdriver 由于我的脚本,“平台”导入从selenium中消失

Selenium webdriver 由于我的脚本,“平台”导入从selenium中消失,selenium-webdriver,phantomjs,Selenium Webdriver,Phantomjs,Linux ip-172-31-36-170 3.10.35-43.137.amzn1.x86_64 1 SMP周三4月2日09:36:59 UTC 2014 x86_64 x86_64 GNU/Linux 亚马逊Linux AMI发布版2014.03 cpe:/o:amazon:linux:2014.03:ga 使用selenium.webdriver.PhantomJS的脚本遇到了一个奇怪的问题 症状… 我的脚本使用以下命令启动phantomjs会话 from selenium import

Linux ip-172-31-36-170 3.10.35-43.137.amzn1.x86_64 1 SMP周三4月2日09:36:59 UTC 2014 x86_64 x86_64 GNU/Linux

亚马逊Linux AMI发布版2014.03 cpe:/o:amazon:linux:2014.03:ga

使用selenium.webdriver.PhantomJS的脚本遇到了一个奇怪的问题

症状… 我的脚本使用以下命令启动phantomjs会话

from selenium import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
(…)
def load_driver(self, _driver = "phantomjs", _path = "./phantomjs"):
        if   "phantom" in str(_driver).lower():
            self.driver = webdriver.PhantomJS(_path)
在以下情况下失败: selenium.common.exceptions.WebDriverException:消息:“无法使用ghostdriver启动phantomjs。”;屏幕截图:可通过屏幕

然而,在python命令行中,一切都很正常

from selenium import webdriver
_path = './phantomjs.exe'
driver = webdriver.PhantomJS(_path)
PLATFORM: Linux
platform.system() != 'Windows':  True
我将在下面解释“PLATFORM:Linux”和“PLATFORM.system!='Windows':True”

所以… 我将错误追溯到“/usr/lib/python2.6/site packages/selenium/webdriver/phantomjs/service.py”,特别是这段代码

def start(self):
    """
    """
    try:
        print "PLATFORM:", platform.system() #ADDED BY ME
        # FOLLOWING ADDED BY ME, NOW CAUSING THE ERROR
        print "platform.system() != 'Windows': ", platform.system() != 'Windows' 
        self.process = subprocess.Popen(self.service_args, stdin=subprocess.PIPE,
                                        close_fds=platform.system() != 'Windows', # <-- THIS CAUSED ORIG PROB
                                        stdout=self._log, stderr=self._log)

    except Exception as e:
        raise WebDriverException("Unable to start phantomjs with ghostdriver.", e)
问题是… 当我在python命令行上运行代码时,上面看到的一切都很好,对“platform.system”和“platform.system!=”Windows“的响应都是正确的

但是,当我运行脚本时,“platform.system”会报告空白和“platform.system!='Windows'”错误。见下面的实际输出

因此,出于某种原因,当我的脚本加载selenium并运行时……selenium代码将丢失“平台”导入

谢谢你的帮助

下面的实际输出注意到“PLATFORM:”后面跟的是“blank”而不是“Linux”,下一行“PLATFORM.system!=“Windows”会触发错误。这些行是我添加到SELENIUM代码中的,不是我的代码

PLATFORM:
Traceback (most recent call last):
  File "./agmarknet.py", line 834, in <module>
    username  = options.username      # --username
  File "./agmarknet.py", line 124, in __init__
    self.load_driver(driver, driver_path)
  File "./agmarknet.py", line 521, in load_driver
    self.driver = webdriver.PhantomJS(_path)
  File "/usr/lib/python2.6/site-packages/selenium/webdriver/phantomjs/webdriver.py", line 50, in __init__
    self.service.start()
  File "/usr/lib/python2.6/site-packages/selenium/webdriver/phantomjs/service.py", line 64, in start
    print "PLATFORM:", platform.system() #333
  File "/usr/lib64/python2.6/platform.py", line 1272, in system
    return uname()[0]
  File "/usr/lib64/python2.6/platform.py", line 1239, in uname
    processor = _syscmd_uname('-p','')
  File "/usr/lib64/python2.6/platform.py", line 995, in _syscmd_uname
    output = string.strip(f.read())
  File "./agmarknet.py", line 350, in _signal_handler
    self._cleanup()
  File "./agmarknet.py", line 194, in _cleanup
    self.driver.close()
AttributeError: 'Agmarknet' object has no attribute 'driver'
2014-05-18 12:42:40,281 - Agmarknet - INFO - Closing WebDriver...
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "./agmarknet.py", line 194, in _cleanup
    self.driver.close()
AttributeError: 'Agmarknet' object has no attribute 'driver'
Error in sys.exitfunc:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "./agmarknet.py", line 194, in _cleanup
    self.driver.close()

这是一个相当技术性的问题,应该在适当的问题跟踪程序中作为错误报告。你可能是对的。由于它在python窗口中工作,我认为这与我的脚本有关,并认为我应该先尝试一下:-