Comment passer selenium webdriver instance d'une autre classe
J'ai parcouru le site mais n'a pas trouvé la réponse que je cherche.
J'ai
- Superbase de classe ici, je viens de créer un objet d'une webdriver
- Baseclass - Dans cette classe-je étendre la Superbase classe, invoquer le pilote, et d'ouvrir l'URL.
- Clicklink classe - Dans cette classe, j'ai à nouveau d'étendre la Superbase de Classe, mais seulement pour trouver une exception de pointeur null. Je pense que je suis l'exception, comme le pilote de l'objet n'est pas initialisé.
Je ne suis qu'un débutant, et n'ont pas essayé le browserfactory et d'autres options, comme j'ai envie de commencer avec de simples flux.
Superclasse
Public class Superclass
{
public webdriver Driver;
}
Baseclass
public class Baseclass extends Superclass
{
setting capabilities and launching the browser
}
ClickLink
public class Clicklink extends Superclass
{
here I want to click on a link
driver.findelement(by.xpath("xpath").click());
//after this statement I get a null pointer exception
}
Pouvez-vous svp me guider ici? comment puis-je obtenir le même.
Merci beaucoup!
- Montrez à vos méthodes s'il vous plaît.
- Est "réglage de capacités et de lancer le navigateur" dans un
@Before*
méthode ou d'un constructeur? - Probablement par la réalisation d'un objet de la classe mère à l'enfant, puis l'invoque grâce à celle-ci. Super-classe sl = new super-classe(); sl.le pilote.findelement(par.xpath("xpath").cliquez sur());
- Je ne peux pas poster les méthodes ici, que c'est à partir de la machine cliente, cependant, voici à quoi il ressemble Dans une Superclasse il n'y a pas de méthodes, juste un public pilote variable Dans Baseclass, j'ai 1 méthodes, qui ouvre le navigateur et vérifie le titre de la page. Dans Clicklink classe, j'ai 2 méthodes j'ai d'Abord créer un objet de Baseclass, puis dans Openbrowser méthode(première méthode dans Clicklink classe), j'ai appeler la méthode de Baseclass-- cela fonctionne bien, le problème est dans la 2ème méthode dans clickClink classe, la méthode de soumission, dans lequel je veux utiliser l'objet à partir de la Superclasse de cliquer sur un lien. Espérons que cette aide!
- J'ai été la mise capacités à l'aide de "@Avant", et "@Test", mais plus tard, j'ai supprimé
- toujours le même. j'.e.exception de pointeur null
- Avez-vous vérifié la page du modèle objet de tutoriels? Beaucoup de/la plupart de leur montrer comment faire cela. Vous pouvez commencer par lire le Sélénium docs sur le POM. seleniumhq.org/docs/...
- C'est dans la mesure où vous n'êtes pas à l'initialisation de la webdriver dans le constructeur de la superclasse.
Vous devez vous connecter pour publier un commentaire.
C'est beaucoup de conjecture fait de mon côté, mais s'il vous plaît assurez-vous que votre super-classe définit en fait le pilote et le renvoie. Vous pouvez effectivement le faire dans les deux méthodes:
Et, plus tard, dans les méthodes que vous l'appelez par:
Ne pas utiliser la langue de programmation pour le nom de vos classes; super-classe et BaseClass sont de très mauvais noms. Au lieu de nommer les objets à l'aide de la langue de problème. Dans ce cas, le site web de test d'applications, même mieux LoginPage, CartPage, ProfilePage, etc. Utiliser le La Page De L'Objet Modèle. Utiliser un BrowserFactory de fournir les instances de WebDriver. Depuis tout ajustement de l'idée "est une page", utiliser l'extension de classe à partir d'un standard PageObject de fournir cette fonctionnalité.
Si vous ne voulez pas passer instance de pilote à la Page des Objets constructeur, vous pourrait créer une certaine classe de conteneur pour le conducteur et le mettre avant le test et l'enlever après les exécuter. Par exemple:
et de faire de cette rubrique conteneur ThreadLocal pour éviter les problèmes avec l'exécution en parallèle.