python selenium raspberry-pi iceweasel

python - Usando Selenium en Raspberry Pi sin cabeza



raspberry-pi iceweasel (2)

Esto funciona para mí en Raspberry Pi sin cabeza:

Instalación:

sudo apt-get install python-pip iceweasel xvfb sudo pip install pyvirtualdisplay selenium

Código:

from selenium import webdriver from pyvirtualdisplay import Display display = Display(visible=0, size=(800, 600)) display.start() driver = webdriver.Firefox()

Esta es la primera vez que intento ejecutar Selenium en una frambuesa pi utilizando el navegador Iceweasel. Probé una prueba simple esta noche

# selenium test for /mod2 # verify: posts, and page name class TestMod2Selenium(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() def test_validate_page_elements(self): driver = self.driver driver.get("127.0.0.1:5000/mod2") self.assertIn("Home - microblog", driver.title) def tearDown(self): self.driver.close()

el error que vuelvo en el tiempo de ejecución es:

===================================================================== ERROR: test_validate_page_elements (__main__.TestMod2Selenium) ---------------------------------------------------------------------- Traceback (most recent call last): File "test.py", line 58, in setUp self.driver = webdriver.Firefox() File "/home/pi/naughton_python/flask/flask/local/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 59, in __init__ self.binary, timeout), File "/home/pi/naughton_python/flask/flask/local/lib/python2.7/site-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in __init__ self.binary.launch_browser(self.profile) File "/home/pi/naughton_python/flask/flask/local/lib/python2.7/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 61, in launch_browser self._wait_until_connectable() File "/home/pi/naughton_python/flask/flask/local/lib/python2.7/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 100, in _wait_until_connectable self._get_firefox_output()) WebDriverException: Message: "The browser appears to have exited before we could connect. The output was: ERROR: ld.so: object ''x_ignore_nofocus.so'' from LD_PRELOAD cannot be preloaded: ignored./nERROR: ld.so: object ''x_ignore_nofocus.so'' from LD_PRELOAD cannot be preloaded: ignored./nERROR: ld.so: object ''x_ignore_nofocus.so'' from LD_PRELOAD cannot be preloaded: ignored./nError: no display specified/n"

Según entiendo, lo que he leído en línea es que Iceweasel actúa como un reemplazo de Firefox en la pi, y muchos han afirmado que todo lo que tienes que hacer es llamar al controlador web de Firefox para usarlo. ¿Estoy haciendo esto incorrectamente?

Gracias por tu tiempo.


No estoy seguro de por qué está sucediendo, pero el error que está obteniendo tiene que ver con el controlador de Firefox usando "eventos nativos" para la simulación de interacción del usuario (teclado, mouse, etc.).

Para obtener algunos detalles técnicos y antecedentes / problemas con eventos nativos, consulte: https://code.google.com/p/selenium/wiki/NativeEventsOnLinux

Muchos usuarios de selenio (incluido yo mismo) encuentran que los "eventos nativos" son problemáticos en muchas situaciones, y es más fácil / más seguro usar "eventos sintetizados" en su lugar. Los eventos sintetizados emulan la interacción del usuario a través de JavaScript.

entonces, intente deshabilitar los eventos nativos (estableciendo la propiedad del perfil) en su controlador y debería pasar ese error.

Ejemplo:

from selenium import webdriver profile = webdriver.FirefoxProfile() profile.native_events_enabled = False driver = webdriver.Firefox(profile) # synthesized events are now enabled for this # driver instance... native events are disabled.