Est-il possible d'interagir avec les éléments cachés avec capybara?
J'ai un fichier de champ qui a opacity: 0
et est la superposition d'un faux bouton. Sa commune css technique pour de faux une sorte de bouton "Upload", qui affiche de manière cohérente à travers les différents navigateurs.
Capybara ne me permet de l'appeler attach_file
sur cette entrée. L'erreur est Selenium::WebDriver::Error::ElementNotVisibleError: Element is not currently visible and so may not be interacted with
.
Quelqu'un sait de toute façon à force de capybara pour interagir avec les éléments invisibles?
La réponse est toujours sans réponse, mais j'ai trouvé un travail autour de. Rien d'intelligent, juste rendre visible l'élément avec un simple script
page.execute_script %Q{
$('#photos').css({opacity: 1, transform: 'none'});
}
Je l'ai poster pour l'enregistrement.
- Il peut être difficile de le faire. Essayez de démarrer à partir de JS ici. Mais il peut ne pas fonctionner dans tous les cas, et que les navigateurs
- On dirait que vous n'êtes pas à l'aide de capybara-webkit (à cause de "Sélénium::WebDriver::message d'Erreur" dans le message d'erreur) j'ai donc enlevé le capybara-webkit tag de votre question
- C'est peut-être déjà répondu ici: stackoverflow.com/a/10805128/914986
- Le travail autour de fonctionne bien! Merci
Vous devez vous connecter pour publier un commentaire.
Vous pouvez interagir avec les éléments cachés à l'aide de la
visible: false
propriété dans le Capybara.Si vous souhaitez, cliquez sur l'élément masqué utilisation:
Ne pas utiliser
click_button('#photo')
directementfind("#photos", visible: false)
va correspondre à visible #photos, trop. Si vous souhaitez faire correspondre les éléments invisibles seulement, vous avez besoinfind("#photos", visible: :hidden)
comme décrit par Thomas Walpole ici stackoverflow.com/questions/53361214/...L'auteur de Capybara recommande la configuration de
Capybara.ignore_hidden_elements
immédiatement avant d'avoir besoin de voir l'invisible élément, et de le rétablir par la suite:En général interaction avec les non-visible éléments ne doivent pas être possible lors de l'utilisation de Capybara (vous pouvez les trouver à l'aide de la
visible: false/hidden
option dans la plupart des inventeurs, mais pas réellement faire quelque chose pour eux). Toutefois, le fichier d'entrée est un cas particulier, car de la façon commune, il est de cacher l'élément et, en raison des restrictions de sécurité, pas d'autre moyen pour ajouter un fichier en interagissant avec les pages les éléments visibles. En raison de cetteattach_file
a unmake_visible
option, qui peut être utilisé pour avoir Capybara faire l'élément visible, joindre le fichier, puis réinitialiser le CSS pour le réglage d'origine.Miquel, merci pour workaraund.
J'ai même question pour interagir avec les fichiers cachés d'entrée sur le C# de liaison pour Selenium Webdriver 2,35 et Firefox 24. Pour faire la sélection de fichier de travail n'a astuce similaire:
J'ai fini par résoudre un itinéraire différent.
execute_script()
était de me donner un moment difficile (il aurait pour effet de geler l'exécution d'un test sur FireFox), donc c'est ce que j'ai fait:J'ai déjà avait un fichier javascript. J'ai ajouté les éléments suivants
J'ai également eu à ajouter
.erb
à mon fichier javascript pour la bonne Rails de l'actif de la manipulation.Et dans mon fichier de test, j'ai été déjà mise en
ENV["RAILS_ENV"] = "test"
De cette façon, je pouvais juste abrutir l'INTERFACE utilisateur pour le test, et encore de maintenir l'apparence de la production.
Je l'ai fait de cette façon avec des éléments qui a le style CSS
display:none;
ensemble:Si l'élément masqué est imbriqué dans un parent visible de l'élément (par exemple un caché d'entrée à l'intérieur d'une étiquette visible), vous pouvez cliquer sur le parent à la place. Si vous souhaitez trouver l'entrée par ID, vous pouvez traverser le parent comme suit: