Je veux faire passer la souris sur un menu déroulant. Lorsque nous survolons le menu, il affichera les nouvelles options. J'ai essayé de cliquer sur les nouvelles options en utilisant le xpath. Mais ne peut pas cliquer directement sur les menus. Donc, en tant que méthode manuelle, j'essaie de survoler le menu déroulant, puis je clique sur les nouvelles options.
Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("//html/body/div[13]/ul/li[4]/a"));
action.moveToElement(we).build().perform();
java
selenium
selenium-webdriver
mouseover
Pradeep SJ
la source
la source
Réponses:
Il n'est pas vraiment possible d'effectuer une action de "survol de la souris", mais vous devez enchaîner toutes les actions que vous souhaitez réaliser en une seule fois. Passez donc à l'élément qui révèle les autres, puis au cours de la même chaîne, passez à l'élément maintenant révélé et cliquez dessus.
Lorsque vous utilisez des chaînes d'action, vous devez vous rappeler de «faire comme un utilisateur le ferait».
la source
webdriver.findElement(By... something)
sont exécutés avant toute autre chose (c'est la seule façon dont leur résultat peut être transmismoveElement
). À ce moment-là, le deuxième élément que vous souhaitez rechercher n'est pas encore visible car le premier doit encore être survolé. Pour résoudre ce problème, comme vous l'avez dit, vous pouvez insérer des intermédiaires.perform()
, puis pour le secondfindElement
, le premier survol aura étéperform
modifié. La solution donnée pourrait fonctionner, en fonction de la mise en œuvre de la page, mais apparemment, votre kilométrage et mon kilométrage variaient.Aucune de ces réponses ne fonctionne lorsque vous essayez d'effectuer les opérations suivantes:
Si vous insérez une commande 'perform' après le moveToElement, elle se déplace vers l'élément et l'élément de sous-menu s'affiche pendant une brève période, mais ce n'est pas un survol. L'élément masqué disparaît immédiatement avant d'être trouvé, ce qui entraîne une exception ElementNotFoundException. J'ai essayé deux choses:
Cela n'a pas fonctionné pour moi. Ce qui suit a fonctionné pour moi:
En utilisant les Actions pour survoler et le clic WebDriver standard, je pourrais passer le curseur, puis cliquer.
la source
Sur la base de cet article de blog, j'ai pu déclencher le survol à l'aide du code suivant avec Selenium 2 Webdriver:
la source
moveToElement
, utilisez celui-ci! Je code en C #, donc ce n'est pas seulement une façon Java de le faire.Example
arguments[0]
?executeScript()
, qui est unwebElement
Ce code fonctionne parfaitement bien:
Après le passage de la souris, vous pouvez ensuite effectuer l'action suivante que vous souhaitez sur les informations révélées
la source
using OpenQA.Selenium.Interactions;
Vérifiez cet exemple comment nous pourrions implémenter cela.
Pour une réponse détaillée, consultez ici - http://www.testautomationguru.com/selenium-webdriver-automating-hoverable-multilevel-dropdowns/
la source
J'ai trouvé cette question à la recherche d'un moyen de faire la même chose pour mes tests Javascript, en utilisant Protractor (une interface javascript vers Selenium.)
Ma solution avec protractor 1.2.0 et webdriver 2.1:
Cela accepte également un décalage (je l'utilise pour cliquer au-dessus et à gauche d'un élément :)
la source
Exemple de programme pour survoler la souris à l'aide de Selenium java WebDriver:
la source
Tu peux essayer:
Si vous aviez le cas, le Web a plusieurs catégories, utilisez la première méthode. Pour le menu que vous vouliez, vous avez juste besoin de la deuxième méthode.
la source