2015-11-06 3 views
1

Вот очень простой код, который я бегу:светлячок селена WebDriver работает в одной машине, но не другой

from selenium import webdriver 
driver = webdriver.Firefox()` 

Здесь ошибка, что он вызывает на Google Compute Например:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 77, in __init__ 
    self.binary, timeout), 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 49, in __init__ 
    self.binary.launch_browser(self.profile) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 68, in launch_browser 
    self._wait_until_connectable() 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 98, 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 construct 
or, check it for details. 

На обеих машинах у меня есть

  • Python 2.7.6
  • Mozilla Firefox 42.0
  • locate selenium возвращает ... /usr/local/lib/python2.7/dist-packages/selenium-2.48.0.dist-info/DESCRIPTION.rs ...
  • Так, Selenium 2.48.0
  • lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.3 LTS Release: 14.04 Codename: trusty

Одна машины запускается на сервере Google Compute (это ошибка) и один на VM VirtualBox (он работает), но это единственное различие, которое я могу найти, и это не имеет значения.

Какие еще существуют различия, которые могут вызвать эту ошибку на одной машине, но не на другой?

ПРИМЕЧАНИЕ: Я думаю, возможно, что вычислительный движок Google не может открыть окно браузера, поскольку вы можете использовать только ssh в командной строке? Тогда эта проблема не может быть решена?

Примечание: Этот код работает на обеих машинах:

from selenium import webdriver 
driver = webdriver.PhantomJS 

Но, мне нужно использовать браузер Firefox, так что это не является решением проблемы только одна вещь, чтобы иметь в виду.

ответ

1

Как вы заметили, причиной может быть то, что вы работаете на безголовой системе. PhantomJS и HTMLUnit и stuf, подобные этому, не требуют наличия x-сервера.

Можете ли вы попытаться запустить firefox на своей командной строке, просто набрав firefox. Если это не удается с исключением, например, Can't find/open display on 0.0 или smth. например, вы должны использовать XVFB:

Описание: Как использовать XVFB.

sudo apt-get update 
sudo apt-get install firefox xvfb 
sudo Xvfb :10 -ac 
export DISPLAY=:10 

Теперь вы можете попробовать запустить Firefox с firefox

команды, которые я скопированная из: http://www.installationpage.com/selenium/how-to-run-selenium-headless-firefox-in-ubuntu/

Если вы хотите установить порт DISPLAY внутри приложения Java и только для экземпляра FireFox вы можете сделать это вот так:

FirefoxBinary firefoxBinary = new FirefoxBinary(); 
    firefoxBinary.setEnvironmentProperty("DISPLAY", ":10"); 

    new FirefoxDriver(firefoxBinary, new FirefoxProfile()); 
+0

Я использовал python и не java, но управлял 4 строками кода относительно xvfb th Открытие python позволило ему работать. – Rorschach

Смежные вопросы