2017-05-31 1 views
-2

J'utilise POM avec certaines opérations courantes comme, click, checkText, etc. déclarées dans ma classe TestBase. J'ai le problème lors de la transition d'un pas à l'autre. Pour surmonter ce problème, je veux ajouter l'attente explicite, et je veux le mettre dans mes opérations communes dans la classe TestBase. je suis en train d'écrire le code comme,Ajout de l'attente explicite dans POM en le faisant comme une méthode commune pour toutes les pages

Pour la classe de base de test,

public WebDriverWait wait = new WebDriverWait(webDriver,10); 

Et sur la page spécifique;

landingPage.wait.until(ExpectedConditions.visibilityOf(WebElement) 

Je reçois l'erreur java.lang.NullPointerException à cause de la classe TestBase. Peut-être que j'utilise WebDriver plusieurs fois? Je ne suis pas sûr à ce sujet car j'ai essayé beaucoup de possibilités mais j'ai échoué. aidez-moi s'il vous plaît.

+0

S'il vous plaît poster votre classe 'TestBase'. – jsheeran

+1

Quelle est la structure de votre projet? pouvez-vous ajouter du code à propos de la classe de base de test et de la classe d'appel – NarendraR

+0

public void testPausePageUntilDocumentIsReady() throws Exception { ((JavascriptExecutor) getWebDriver()). executeScript ("return document.readyState"). égal ("complet"); testPausePage(); Public WebDriver getWebDriver() { return webDriver; } public WebDriverWait wait = nouveau WebDriverWait (webDriver, 10); public void testPausePage() throws Exception { Thread.sleep (1500); } – faheem

Répondre

0

Je suis capable de deviner votre problème. Vous initialisez votre variable d'attente dans la base. Le problème ici est que webDriver n'est pas initialisé au moment de l'initialisation de l'attente. Donc n'initialisez pas l'attente jusqu'à ce que la variable webdriver soit initialisée. Vous pouvez le déclarer dans la classe de base, mais ne pas initialiser comme,
public WebDriverWait wait;

Vous pouvez initaize après l'initialisation WebDriver comme,
WebDriver webDriver=new FirefoxDriver();
wait =new WebDriverWait(webDriver, 60);

+0

cela fonctionne ....merci – faheem

-1

Je pense que u peut utiliser dans Thread.sleep votre classe de base comme ci-dessous. Il attendra également le temps donné spécifié en milli secondes en argument.

importez votrePOMPage;

public class TestBaseClass {

pilote WebDriver public;

// Définir variable obj

yourPOMPage obj;

methodName public void() renvoie InterruptedException {

 obj = new yourPOMPage(driver);//initialized the obj 
     Thread.sleep(5000); 
     obj.MethodofPOMPage(); // MethodofPOMPage u must have to create in POM Page 

}

}

+0

Veuillez formater votre code correctement. – PaulNUK