Comment identifier un élément Div avec plusieurs noms de classe
Lors de l'interaction avec des éléments Web, le ciblage des éléments à l'aide de leurs noms de classe peut être crucial. Cependant, l'annotation @FindBy de Selenium n'autorise qu'un seul nom de classe dans le paramètre className. Cela peut être limitant, car les éléments ont souvent plusieurs noms de classe.
Approches alternatives
Pour surmonter cette limitation, envisagez les alternatives suivantes :
1. Utilisez le paramètre XPath
XPath vous permet d'utiliser des expressions complexes pour identifier des éléments. Pour des correspondances de classe exactes, vous pouvez utiliser la syntaxe suivante :
@FindBy(xpath = "//div[@class='value test']") @CacheLookup private WebElement test;
2. Utilisez contain(@class) dans XPath
Si l'élément peut avoir n'importe quelle combinaison des noms de classe spécifiés, vous pouvez utiliser l'expression contain(@class) :
@FindBy(xpath = "//div[contains(@class, 'value') and contains(@class, 'test')]") @CacheLookup private WebElement test;
3. Utiliser les sélecteurs CSS
Les sélecteurs CSS offrent un moyen flexible de cibler des éléments en fonction de plusieurs noms de classe. La syntaxe suivante vous permet de faire correspondre des éléments avec n'importe quelle combinaison des noms de classe spécifiés :
@FindBy(css = "div[class*='value test']") @CacheLookup private WebElement test;
Comprendre la correspondance de classe XPath
Il est important de noter que la correspondance de classe XPath les règles diffèrent légèrement des sélecteurs CSS. Si vous avez besoin d'une correspondance exacte, utilisez [@class='value test']. Pour faire correspondre des éléments avec n'importe quel ordre ou combinaison de noms de classe, utilisez [contains (@class, 'value') et contain (@class, 'test')].
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!