2017-01-31 2 views
0

Bonjour tous,ReactJS DropDown et PhantonJS Headless ne joue pas bien ensemble

J'essaie actuellement d'exécuter des tests de concombre sur un composant reactjs, sélection de recherche déroulant, en cours d'exécution en mode sans tête, en utilisant PhantonJS, mais il est à l'origine une situation étrange qui m'empêche complètement de ces tests.

En utilisant le menu déroulant ci-dessous reactJs, http://jedwatson.github.io/react-select/, ce sont les « utilisateurs « Github (Async avec fetch.js) » »

La question actuelle qui est quand selon les scénarios arrive à ce quatrième exemple tester échoue mais le même code est utilisé pour passer les trois premiers tests. Je pensais que c'était le quatrième exemple, donc je l'ai changé avec d'autres valeurs et il échoue toujours à la quatrième étape.

C'est le code utilisé pour entrer la valeur dans le menu déroulant recherche

find(".Select").trigger("click") 

fix_overlap = %{ $('.Select-placeholder').css('z-index', -99999) } 
page.execute_script(fix_overlap) 

find(".Select .Select-input input").native.send_keys(with) 
find(".Select-menu-outer", text: with, visible: :all, match: :first).click 

Le contrôle réagit fait appel asynchrone pour rechercher les données d'entrée à partir d'un point final de l'API.

Je peux exécuter le test dans un navigateur sans problème.

L'erreur renvoyée par le test est que je ne trouve pas la valeur dans la liste déroulante.

J'ai ajouté les options à la configuration de l'environnement quand je me inscris poltergeist,

options = {:js_errors => false, phantomjs_options: ['--debug=true'], debug: false } 
Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, options) 
end 

pour voir s'il y a une erreur interne qui ne figure pas dans la console de débogage.

J'ai fait un page.save_screenshot pour voir l'état juste avant l'erreur et la liste déroulante a la valeur correcte.

Questions

Y at-il d'autres options qui peuvent être ajoutées pour afficher plus d'informations/erreurs?

Quelqu'un a déjà rencontré ce problème?

Je suis ouvert à toutes les suggestions pour corriger ce comportement étrange.

détails supplémentaires

bijou 'Poltergeist', '= 1.9.0' bijou 'concombre', '~> 2.0'

Répondre

0

Pour les "Villes (Grand Dataset)" par exemple sur la page liée, le code suivant sélectionne le "New York" entrée pour moi, sans avoir recours à l'aide trigger, execute_script ou native

with = "New York" 
section = find('.section', text: 'Cities (Large Dataset)') 
section.find('.Select').click 
section.find('.Select-placeholder').send_keys(with) 
section.find('.VirtualizedSelectOption', exact_text: with).click 

qui utilise la la test Poltergeist et Capybara.Sans la dernière version de Capybara, vous devrez probablement passer une regex en tant qu'option de texte dans la dernière ligne plutôt que l'option: exact_text (sinon vous obtiendrez plusieurs réponses)

Pour l'exemple «Contributeurs (Async)»

with = 'Craig Dallimore' 
section = sess.find('.section', text: 'Contributors (Async)') 
section.find('.Select').click 
section.find('.Select-input input').send_keys(with.gsub(' ', '') 
section.find('.Select-option', exact_text: with).click 

choisira quelqu'un

+0

J'ai fait un changement à la question que j'ai énuméré dans la liste déroulante incorrecte –

+0

J'ai essayé votre méthode @Thomas Walpole, qui fonctionne très bien pour les « Villes (grand Dataset) », mais ne semblent fonctionner pour les utilisateurs 'Github (Async avec fetch.js)'. Il semble y avoir un problème à la base du '. VirtualizedSelectOption 'valeur. –

+0

Capybara :: ElementNotFound: Impossible de trouver css ".VirtualizedSelectOption" avec le texte exact craig-davis ./features/step_definitions/test_peter.rb:11:in '/^J'ai entré des données $/' ./features/ online_v2/create_ea_business.feature: 90: dans 'Et j'ai entré des données ' ./features/online_v2/create_ea_business.feature:86:in' Et j'ai entré des données' 1 scénario (1 échoué) 2 étapes (1 échec, 1 réussi) –