web-dev-qa-db-fra.com

Comment accéder au deuxième élément ayant le même nom de classe dans Selenium en utilisant java

Lorsque vous essayez d'automatiser notre application, deux boutons portent le même nom.

Je ne suis pas capable de trouver un moyen de les reconnaître. Faites-moi savoir ce qui pourrait être d'autres moyens d'identifier ces éléments dans Selenium WebDriver en Java

8
Nagarjuna Reddy

Vous pouvez utiliser l'option d'indexation xpath.

By.xpath("(//input[@name='Button'])[2]")
16
Santoshsarma

Vous pouvez toujours utiliser xpath s'il n'y a pas d'unicité avec attribut. Par exemple si vous voulez trouver un élément qui a le texte foo et le nom button, je préférerai alors xpath comme ci-dessous si name n'est pas unique:

//*[@name='button' and text()='foo'] 

Ou pour une classe différente mais le même nom

//button[@name='button' and @class='xyz']

ou Pour un texte différent mais le même nom

//input[@name='button' and contains(text(),'Click Here')]

ou pour des tags différents mais le même nom

//button[@name='button']
//input[@name='button']

Il suffit d’aller avec une propriété unique et de créer un xpath personnalisé. 

J'espère que vous pourrez également utiliser le script Java pour cela également, par exemple.

WebElement butttonToClick = driver.findElement(By.name("button"));
((JavascriptExecutor)driver).executeScript("arguments[1].click();",butttonToClick );

arguments[1] désigne le deuxième élément ayant le même nom.

1

Vous pouvez utiliser des méthodes xpath comme suit-freres/frères précédents.

Par exemple, si le bouton est situé sur un élément Web unique, essayez d’identifier celui-ci en premier et en utilisant différentes méthodes xpath, telles que le contenu suivant, le contenu, les frères précédents, vous pouvez accéder à l'élément Web. 

0
Deepika G