来自一个用户的Python 3运行脚本可以正常工作,但另一个用户不运行?

时间:2015-06-05 15:56:58

标签: jenkins python-3.4

当我从用户jenkins(Linux Mint)运行此脚本时,我收到此错误,并且当从我的用户运行它时,它可以工作。 Jenkins用户是使用jenkins服务创建的。我已经安装了virtualenv。

import unittest

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

DRIVER = None

def getOrCreateWebdriver():
    global DRIVER
    DRIVER = DRIVER or webdriver.Firefox()
    return DRIVER


class LoginTest(unittest.TestCase):
    def setUp(self):
        self.browser = getOrCreateWebdriver()

    def test_Loggin(self):pass
         browser = self.browser

    def tearDown(self):
        self.browser.close()

if __name__ == '__main__':
    unittest.main(verbosity=2)

From user jenkins when i run this script i get error :
test_Loggin (__main__.LoginTest) ... ERROR
/usr/lib/python3.4/unittest/case.py:602: ResourceWarning: unclosed file <_io.BufferedWriter name='/dev/null'>
  outcome.errors.clear()

======================================================================
ERROR: test_Loggin (__main__.LoginTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "Test.py", line 16, in setUp
    self.browser = getOrCreateWebdriver()
  File "Test.py", line 10, in getOrCreateWebdriver
    DRIVER = DRIVER or webdriver.Firefox()
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/webdriver.py", line 64, in __init__
    self.binary, timeout),
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 51, in __init__
    self.binary.launch_browser(self.profile)
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 70, in launch_browser
    self._wait_until_connectable()
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 100, in _wait_until_connectable
    raise WebDriverException("The browser appears to have exited "
selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details.

1 个答案:

答案 0 :(得分:0)

当您以自己的身份登录时,您需要执行echo $DISPLAY并记下它打印的显示信息。随后当您以jenkins服务身份登录时,您需要xhost +DISPLAY=[display-info]; export DISPLAY。 (display-info是你从echo $ DISPLAY获得的,忽略方括号,它们不应该在命令中指定)

希望这应该有效。我没有类似的环境可以测试,只是提到我记得已经做了很久的事情。