2017-01-05 1 views
0

Test de ce site: http://store.demoqa.com/Comment écrire une méthode avec un paramètre dans Selenium 2?

Mon test vérifie que vous pouvez ajouter et retirer le produit du panier.

j'ai écrit une méthode sans paramètre qui ressemble à ceci:

public AllProductPage chooseProduct() { 
     //Click on product iPhone5 
     driver.findElement(By.className("wpsc_buy_button")).click(); 
     //Expected: Product "iPhone5" has been opened 
    return new AllProductPage(driver); 
    } 

Je dois écrire une méthode avec un paramètre et choisir le produit dans le test et non dans le code que je l'ai écrit.

@Test 
    public void verifyThatBeCanAddAndRemoveTheProductFromCart() throws InterruptedException { 

     ImplicitWait(driver); 

     HomePage onHomePage = new HomePage(driver); 
     System.out.println("Step 1"); 
     AllProductPage onAllProductPage = onHomePage.clickOnAllProduct(); 
     System.out.println("Step 2"); 
     onAllProductPage.chooseProduct(); 
     onAllProductPage.buttonGoToCheckout(); 
     onAllProductPage.submitForm(); 
     System.out.println("Step 3"); 
     Assert.assertTrue(onAllProductPage.getMessage().contains("Oops, there is nothing in your cart.")); 
    } 

Répondre

0

Je suis ne sais pas quel genre de données que vous souhaitez passer à la fonction, mais vous pouvez essayer de passer une chaîne contenant le nom du produit, comme ce qui suit:

public AllProductPage chooseProduct(String productName) { 
    //Click on product received in parameter 
    driver.findElement(By.xpath("//div[contains(@class,'productcol')][descendant::*[contains(text(),'"+productName+"')]]//input[@class='wpsc_buy_button']")).click(); 
    //Expected: Product has been opened 
    return new AllProductPage(driver); 
} 

Votre test peut ressembler à ceci:

@Test 
    public void verifyThatBeCanAddAndRemoveTheProductFromCart() throws InterruptedException { 

     ImplicitWait(driver); 

     HomePage onHomePage = new HomePage(driver); 
     System.out.println("Step 1"); 
     AllProductPage onAllProductPage = onHomePage.clickOnAllProduct(); 
     System.out.println("Step 2"); 
     onAllProductPage.chooseProduct("iPhone 5"); 
     onAllProductPage.buttonGoToCheckout(); 
     onAllProductPage.submitForm(); 
     System.out.println("Step 3"); 
     Assert.assertTrue(onAllProductPage.getMessage().contains("Oops, there is nothing in your cart.")); 
    } 

Notez que dans cet exemple, le produit est fixé dans le code de test, mais il pourrait être une variable aussi bien.

+0

Ceci est mon erreur maintenant: org.openqa.selenium.NoSuchElementException: aucun élément de ce type: Impossible de localiser l'élément: {"méthode": "xpath", "sélecteur": "// div [contient (@class, ' productcol ')] [descendant :: * [contains (text(),' iPhone5 ')]] // input [@ name =' wpsc_ajax_action '] "} –

+0

Au lieu de' iP hone5 ', utilisez' iPhone 5 'dans le xpath. Le texte que vous passez à la fonction doit correspondre exactement comme indiqué dans la page. – Renato

+0

Ceci est une erreur maintenant: org.openqa.selenium.ElementNotVisibleException: élément non visible –