Использование поставщика данных во втором методе @test в том же файле класса не выполняется успешно - PullRequest
0 голосов
/ 17 мая 2018

По моему требованию, у меня есть кнопка «Добавить», на экране появляется надпись «ClassC».Он открывает всплывающий модуль.где я могу добавить большее количество значений и сохранить.

Мой код выполняется одним методом @Test с итерацией поставщика данных.Но это не удалось после одной итерации.Итак, я создал еще один метод @test с поставщиком данных.

Ошибка при получении кода после успешного запуска первого метода @test.Отсутствие первого элемента относится ко второму методу @test.

Ошибка: столбцы («Encounter», «account», «Encounter») org.openqa.selenium.TimeoutException Ожидаемое условие не выполнено: ожидание видимостиэлемент расположен по By.xpath: // * [@ id = 'txtDisplayName'] (пробовал 4 секунды с интервалом в 500 миллисекунд).

public class classc extends classb {

@Test
public void Create()
{
// Redirection to the screen
    obj1.actiononMenu(driver, wait, "//abbr[@class='ti-settings']", "//samp[text() = 'Focus']", "//li[2]/ul/li[1]/a");

long focusauditTimetaken = (long) obj1.javatimeout(driver);
    this.wait = obj1.explicitWait(driver, (int) focusauditTimetaken);

    // Clicking add button
    WebElement addButton = obj1.selectElement(wait, "//div[2]/button");
    obj1.clickElement(addButton);

}

@Test(dataProvider = "addingColumns")
public void columns(String displayName, String columnName, String uniqueName)
{
    // Passing first value from the DataProvider (displayName)  
    WebElement displayColumn = obj1.selectElement(wait, "//*[@id='txtDisplayName']");
    obj1.clickElement(displayColumn);
    obj1.sendtext(displayColumn, displayName);

// Passing second value from the DataProvider (columnName)  
    WebElement columnDropdown = obj1.selectElement(wait, "//div[contains(text(), 'Select Column Name')]");
    obj1.clickElement(columnDropdown);

    obj1.dropdownfilter(driver, wait, "//div[@class='filter']/input", columnName);

// Passing thrid value from the Data Provider (uniqueName)
    WebElement uniqueDropdown = obj1.selectElement(wait, "//div[contains(text(), 'Select Column')]");
    obj1.clickElement(uniqueDropdown);

    obj1.dropdownfilter(driver, wait, "//div[@class='filter']/input", uniqueName);

// Save first set values 
    WebElement addcolumnButton = obj1.selectElement(wait, "//button[@class='button create hvr-glow hvr-icon']");
    obj1.clickElement(addcolumnButton);


}

@DataProvider(name = "addingColumns")
public Object[][] addColumns()
{
    return new Object[][]
            {
        {"AA","BB","CC"},
        {"11","22","33"}
            };
            }

}

Класс c расширяет класс B.

public class ClassB extends ClassA{

@Test
public void project() {

    try {
        obj1.implicitWait(driver, 10);          
        WebElement groupName = wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//*[@class='placeholder']"))));
        groupName.click();

        WebElement inputText = wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//*[@class='filter']//input"))));
        inputText.click();
        inputText.sendKeys("Par");
        inputText.sendKeys(Keys.DOWN);
        inputText.sendKeys(Keys.ENTER);

        long timetaken = (long) obj1.javatimeout(driver);
        this.wait = obj1.explicitWait(driver, (int) timetaken); 

    } catch (Exception e) {
        System.out.println("Project group not selected " +e);
        // TODO: handle exception
    }

}

Класс B расширяет класс A.

public class ClassA{

WebDriver driver;
WebDriverWait wait;

Commonclass obj1 = new Commonclass();

@BeforeSuite
public void callbrowser()
{
    this.driver = obj1.selectBrowser(driver, "Chrome");

}

@Test
public void login()
{
    driver.get("https://Link Goes here");

    long timetaken = (long) obj1.javatimeout(driver);
    wait = obj1.explicitWait(driver, (int) timetaken);

    WebElement signin = obj1.selectElement(wait, "//*[@id='txtSigninID']");
    obj1.sendtext(signin, "My Name");

    WebElement password = obj1.selectElement(wait, "//*[@id='txtPassword']");
    obj1.sendtext(password, "my password");

    WebElement submit = obj1.selectElement(wait, "//*[@name='btnSignIn']");
    obj1.clickElement(submit);
}

}

Весь код выполняется, если у меня один метод @test.Почему два метода @test в одном классе не работают.Я добавляю testng.xml ниже.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="5" name="Test">
<classes>
<class name="com.abc.def.aaa.classa"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

1 Ответ

0 голосов
/ 19 августа 2019

Надеюсь, эта ссылка ответит на ваш вопрос и решит вашу проблему https://howtodoinjava.com/testng/testng-dataprovider/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...