web-dev-qa-db-fra.com

Selenium webdriver code Java utilisant un pilote Web pour double-cliquer sur un enregistrement dans une grille

Comment écrire le code Java Selenium pour doubleClick() sur un enregistrement à l'aide d'un pilote Web?

J'ai affiché quelques enregistrements dans la partie du corps. Une fois que j'ai cliqué sur un enregistrement, nous devrions avoir une fenêtre contextuelle pour le mettre à jour.

Veuillez suggérer comment écrire du code Java Selenium à l’aide du pilote Web.

J'ai essayé le code suivant:

Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.xpath("//table/tbody/tr[2]/td/div/div/table/tbody/tr[10]/td[1]"))).doubleClick().build().perform();
6
Gokul
Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.xpath("//table/tbody/tr[2]/td/div/div/table/tbody/tr[10]/td[1]"))).doubleClick().perform();

Ce code fonctionne !!!

7
Gokul

Utilisez Actions class pour effectuer des actions de la souris et du clavier sur WebElements à l'aide de WebDriver.

Actions action = new Actions(driver);
WebElement element=driver.findElement(By.linkText("TEST"));

//Double click
action.doubleClick(element).perform();

//Mouse over
action.moveToElement(element).perform();

//Right Click
action.contextClick(element).perform();
19
Santoshsarma

Vous devez utiliser la classe Actions() car elle inclut une action "double-clic".

Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.linkText("Test"))).doubleClick().build().perform();
7
Mark Rowlands

Essayez ce code:

Actions action = new Actions(driver);
WebElement btnElement=driver.findElement("Locator of element"));
action.doubleClick(btnElement).build().perform();
3
iamsankalp89
  WebElement element = driver.findElement(selector);
  Actions builder = new Actions(driver);
  builder.doubleClick(element).perform();
0
Ran Adler

J'ai implémenté la solution de Ran (immédiatement au-dessus de mon post). J'écris en Java avec Eclipse et utilise Selenium WebDriver.

Il y a 2 importations dont vous aurez besoin:

import org.openqa.Selenium.WebElement;
import org.openqa.Selenium.interactions.Actions;

Ensuite, j'ai implémenté le code de la manière suivante:

WebElement element = driver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/div[1]/div[3]/div[8]/div[2]/div/div[2]/div/table/tbody/tr[2]"));
Actions builder = new Actions(driver);
builder.doubleClick(element).perform();

Merci à Ran! Cela faisait plusieurs heures que je me débattais avec celui-ci. Invoquer le simple clic deux fois ne fonctionne pas pour moi - trop de temps entre les événements à capturer par le navigateur testé en double-clic.

0
Ron Patrick Horton

Et au cas où aucune action supplémentaire ne soit liée à un seul clic, vous pouvez utiliser:

driver.findElement(By.xpath("%youXPath%"))).click;
driver.findElement(By.xpath("%youXPath%"))).click;

En fait, cela devrait fonctionner dans la plupart des cas (sauf que vous avez des paramètres de double-clic système personnalisés)

0

Vous pouvez utiliser Actions class de WebDriver pour effectuer des actions composites telles que Double-clic, glisser-déposer, survol de la sourisetc.

// Crée une instance de la classe Actions en transmettant l'instance de pilote actuelle.

Actions builder = new Actions(driver);

Voie 1:  

// Obtient un objet de classe Action contenant une action/un ensemble d'actions

Action action = builder.doubleClick(element);

// Construit l'ensemble des actions/actions simples à l'aide de build () et s'exécute sur un navigateur à l'aide de la méthode perform ().

action.build().perform();

Voie 2:

// Appelle les méthodes build () et perform () directement sur l'instance de la classe Actions

builder.doubleClick().build().perform();
0
Jackin Shah