6
votes

PHANTOM JS Pilote est incapable de localiser parfois des éléments

Je suis nouveau à Phantomjs et j'essaie d'exécuter mes tests de sélénium (python) à l'aide de pilote Phantomjs, mais ce ne seront pas les éléments Web.

Journaux de Ghostdriver: P>

[INFO  - 2015-02-27T15:24:40.236Z] GhostDriver - Main - running on port 52653
[INFO  - 2015-02-27T15:24:41.075Z] Session [bfd397f0-be94-11e4-ad03-b711254501c8] - page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,"loadImages":true,"localToRemoteUrlAccessEnabled":false,"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.0.0 Safari/538.1","webSecurityEnabled":true}
[INFO  - 2015-02-27T15:24:41.075Z] Session [bfd397f0-be94-11e4-ad03-b711254501c8] - page.customHeaders:  - {}
[INFO  - 2015-02-27T15:24:41.075Z] Session [bfd397f0-be94-11e4-ad03-b711254501c8] - Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"2.0.0","driverName":"ghostdriver","driverVersion":"1.2.0","platform":"mac-10.9 (Mavericks)-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"}}
[INFO  - 2015-02-27T15:24:41.075Z] SessionManagerReqHand - _postNewSessionCommand - New Session Created: bfd397f0-be94-11e4-ad03-b711254501c8
[ERROR - 2015-02-27T15:24:47.242Z] WebElementLocator - _handleLocateCommand - Element(s) NOT Found: GAVE UP. Search Stop Time: 1425050687190

  :262 in error


1 commentaires

essayez temps.sleep (5) au lieu de webDriverwait


3 Réponses :


0
votes

J'ai remarqué que ces éléments ne sont pas localisés dans des cas de test à l'aide des méthodes Find_Element par PHANTOMJS Pilote, accessible par JavaScript à l'aide de JavascriptExecutor. Utilisez le script Java pour accéder à l'élément et pour l'action sur un élément.Je espère que cela résoudra votre problème.


1 commentaires

Merci pour votre réponse. Mais cette solution ne fonctionnera pas pour moi. Je vais devoir faire beaucoup de changements pour le faire fonctionner :(



0
votes

Il est possible que votre test de sélénium essaie de trouver un élément avant qu'il ne soit chargé. Après une première tentative infructueuse, vous devriez essayer encore et encore et continuer jusqu'à ce que vous trouviez l'élément ou le délai d'attente dépassé.

regarder splinter https://splinter.readthedocs.org/en/latest/index .html Il fonctionne avec sélénium et implémente la logique d'attente des éléments.


1 commentaires

J'attends 10 secondes pour localiser l'élément, après cela une exception de délai d'attente est lancée. Fichier "/Library/python/2.7/site-packages/selenium/webdiver/suppor t / west.py", ligne 71, dans jusqu'à ce que soumise TimeoutException (message) TimeoutException: Message:



3
votes

SO ... Il ressemble à n'importe quel élément qui utilise Selenium WebDriver WAKDER WAIT utilise réellement un schéma de vote. N'oubliez pas qu'une attente explicite de sélénium est du code que vous définissez pour attendre qu'une certaine condition se produise avant de poursuivre davantage le code. WebDriverWait par défaut appelle l'attente de la confiance toutes les 500 millisecondes jusqu'à ce qu'il revienne avec succès. ( Référence. ) Ce que cela signifie est tous de 500 msecs, des tests de sélénium la condition d'attente. Si vrai, procédez. Si ce n'est pas encore vrai, attendez un autre cycle de fréquence de sondage, puis essayez à nouveau.

et de mes tests, ma conviction est qu'un test de sondage et non-prêt - alors appelez-le d'échouer définitivement des erreurs dans mon ghostdriver. Connectez-vous P>

driver.wait.until(EC.presence_of_element_located((By.XPATH, "//*[@id='special_content_id']//td[contains(.,'" + info.unitId + "')]")))


0 commentaires