WebElement est une interface - faire des méthodes peuvent être appelées avec succès?
Depuis WebElement est une interface, cela signifie que toutes les méthodes présentes dans la WebElement interface sont abstraites, c'est à dire qu'ils n'ont pas un corps. Aussi, nous savons que nous ne pouvons pas accéder aux méthodes de l'interface en utilisant directement référence à l'interface (parce que les méthodes n'ont pas de mise en œuvre)
Maintenant, considérons le code suivant:
WebElement button = driver.findElement(//xpath of a button);
button.click();
Quelqu'un peut m'expliquer comment est-il possible ici pour accéder à la méthode click() de l'interface WebElement par "bouton" qui n'est rien mais une référence à l'interface WebElement?
Vous devez vous connecter pour publier un commentaire.
La
WebElement
interface est implémentée parAndroidWebElement
,HtmlUnitWebElement
, ouRemoteWebElement
.La
click
méthode est exécutée sur l'un de ces classes concrètes (ce qui est retourné parfindElement
).Consultez la documentation suivante pour plus de détails:
SearchContext et Takescreenshot interfaces sont parents de WebElement interface.
Maintenant RemoteWebElement, htmlunitWebElement classes implémentent WebElement interface.
Ici, je joins une capture d'écran pour votre meilleure compréhension.
Vous pouvez voir la même chose en installant decompiler dans votre IDE et faites un clic droit sur WebElement interface. Vous auriez du voir la même réflexion :