web-dev-qa-db-fra.com

Utilisation de Selenium sur le Raspberry Pi sans tête

C'est la première fois que j'essaie d'exécuter Selenium sur un Raspberry Pi à l'aide du navigateur Iceweasel. J'ai essayé un test simple ce soir 

# 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()

l'erreur que je reçois au moment de l'exécution est la suivante:

=====================================================================
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"

D'après ce que j'ai compris de ce que j'ai lu en ligne, Iceweasel se substitue à Firefox sur le pi et beaucoup ont affirmé qu'il suffisait d'appeler le WebDriver firefox pour l'utiliser. ceci incorrectement? 

Merci pour votre temps. 

16
Lombax

Cela fonctionne pour moi sur Raspberry Pi sans tête:

Installation:

Sudo apt-get install python-pip iceweasel xvfb
Sudo pip install pyvirtualdisplay Selenium

Code:

from Selenium import webdriver
from pyvirtualdisplay import Display

display = Display(visible=0, size=(800, 600))
display.start()

driver = webdriver.Firefox()
34
fivef

Je ne sais pas pourquoi cela se produit, mais cette erreur que vous obtenez est liée au fait que le pilote Firefox utilise des "événements natifs" pour la simulation d'interaction utilisateur (clavier, souris, etc.).

Pour des détails techniques et des informations sur les antécédents/problèmes liés aux événements natifs, voir: https://code.google.com/p/Selenium/wiki/NativeEventsOnLinux

De nombreux utilisateurs de Selenium (dont moi-même) trouvent que les "événements natifs" sont problématiques dans de nombreuses situations, et il est simplement plus facile/plus sûr d’utiliser des "événements synthétisés". Les événements synthétisés émulent les interactions de l'utilisateur via JavaScript.

essayez donc de désactiver les événements natifs (en définissant la propriété profile) dans votre pilote et vous devriez dépasser cette erreur.

Exemple:

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.
0
Corey Goldberg