2017-01-05 5 views
0

Испытание этого сайта: http://store.demoqa.com/Как написать метод с параметром в Selenium 2?

Мой тест подтверждает, что можно добавлять и удалять продукт из корзины.

Я написал метод без параметров, который выглядит следующим образом:

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); 
    } 

мне нужно написать метод с параметром и выбрать продукт в тесте, а не в коде, который я написал.

@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.")); 
    } 

ответ

0

Я не знаю, какие данные вы хотели бы перейти к функции, но вы можете попытаться передать строку, содержащую имя продукта, как следующее:

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); 
} 

Ваш тест может выглядеть следующим образом:

@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.")); 
    } 

Обратите внимание, что в этом примере продукт фиксируется в тестовом коде, но это может быть переменной, а также.

+0

Это моя ошибка сейчас: org.openqa.selenium.NoSuchElementException: нет такого элемента: не удалось найти элемент: {"method": "xpath", "selector": // // div [contains (@class, ' productcol ')] [descendant :: * [contains (text(),' iPhone5 ')]] // input [@ name =' wpsc_ajax_action '] "} –

+0

Вместо« iP hone5 »используйте« iPhone 5 »в XPath. Текст, который вы передаете funciont, должен соответствовать точно так, как показано на странице. – Renato

+0

Это ошибка: org.openqa.selenium.ElementNotVisibleException: элемент не отображается –

 Смежные вопросы

  • Нет связанных вопросов^_^