Перейти к содержимому

Техники локализации плавающих дефектов
онлайн, начало 19 апреля
Тестирование безопасности
онлайн, начало 21 апреля
Тестирование мобильных приложений
онлайн, начало 21 апреля
Автоматизатор мобильных приложений
онлайн, начало 21 апреля

Drenjy

Регистрация: 12 фев 2015
Offline Активность: 23 янв 2019 11:07
-----

Мои темы

Специалист по автоматическому тестированию ПО(Краснодар)

24 апреля 2018 - 07:38

Требуемый опыт работы: от 1 года.

 

Полная занятость, полный день.

 

ООО «Ростелеком-Интеграция» - интегратор программных решений, оказывает полный комплекс услуг по разработке и внедрению программных решений, обеспечивающих развитие и повышение эффективности бизнеса ОАО «Ростелеком».
Успешной работе компании способствует выбранная стратегия развития – курс на инновации, собственная экспертиза по всему спектру программных решений и аккумуляция интеллектуального потенциала лучших российских ИТ-специалистов.
ООО «Ростелеком-Интеграция» входит
в группу компаний ОАО «Ростелеком», создано в 2014 году.

Также ознакомиться с нашей компанией можно на нашем сайте http://www.rt-integration.ru/

 

Обязанности:

  • Анализ требований
  • Разработка планов по тестированию и тест-кейсов
  • Разработка автоматических тестов

Требования:

  • От года в области автоматического тестирования программного обеспечения
  • Знание и опыт применения различных методик тестирования
  • Опыт написания автоматических тестов для web-приложений
  • Опыт нагрузочного тестирования
  • Опыт тестирования интеграционных сервисов
  • Знание Java/Python/javascript будет рассматриваться как преимущество
  • Selenium, JMeter
  • SOAP UI/Postman
  • Опыт работы с базой данных.

Условия:

  • Оформление в штат компании ООО "Ростелеком-Интеграция";
  • Полностью "белая" заработная плата: оклад + премия 20%
  • Работа в дружном коллективе;
  • ДМС после испытательного срока, включая стоматологию;
  • Работа в одной из ведущих компаний на российском рынке телекоммуникаций;
  • Корпоративное обучение;
  • Офис находится в г. Краснодар
  • Полная занятость, полный день
  • Курсы, сертификации за счет компании.
  • Карьерный и профессиональный рост.
Адрес
Краснодар, Центральный микрорайон, Красная улица, 59

Нужна помощь по BeforeClass TestNg dataProvider

04 июля 2017 - 19:28

 

Привет, форумчане. Снова нужна ваша помощь!.

 

Есть тесты, для которых использую дата провайдер, получающий данные из Json файла.

Хотелось бы перед начало класса, запускать проверку на существование данных.

Вот как у меня построено.

public class DocumentTests extends TestBase {
    private final BillData billData;
    AddCustomerBill addCustomerBill = new AddCustomerBill();

    @Factory(dataProviderClass = DataProviderForTests.class, dataProvider = "validBillsFromJson")
    public DocumentTests(BillData billData){
        this.billData=billData;
    }
    @BeforeClass
    public void checkBillForUser(BillData billData) throws InterruptedException {
        app.getUserHelper().loginAs(USER);
        if (app.getUserHelper().userHasBill(billData.getNumber() + " " + billData.getCompanyname())) {
            return;
        }
        app.getUserHelper().logout();
        addCustomerBill.addPersonalAccount(billData);
    }

    @Test(dataProviderClass = DataProviderForTests.class, dataProvider = "validBillsFromJson")
    public void selectBill(BillData billData) {
            app.getUserHelper().loginAs(USER);
            app.getSubdivisionPage().openSubdivisionWin();
            app.getSubdivisionPage().searchBill(billData.getNumber());
            app.getSubdivisionPage().selectSubdivisionBy(billData.getNumber() + " " + billData.getCompanyname());
        if (app.getUserHelper().userHasBill(billData.getNumber() + " " + billData.getCompanyname()) == false) {
            System.out.println("Счёт не найден: " + billData);
        }
    }

    @Description("Проверяем наличие элементов на странице")
    @Test(dataProviderClass = DataProviderForTests.class, dataProvider = "validBillsFromJson")
    public void assertOneTimeOrderPageElements(BillData billData) {
        app.getUserHelper().loginAs(USER);
        selectBill(billData);
            app.getSubdivisionPage().closeWindow();
            app.getNavigationHelper().toDocuments();
.....
}

@BeforeTest как я понимаю, не позволяет использовать параметры.

@Factory отрабатывает нормально, а после всё падает с ошибкой:

org.testng.TestNGException: 
Can inject only one of <ITestContext, XmlTest> into a BeforeClass annotated checkBillForUser.

Подскажите пожалуйста, какое решение более верное?


Нужна помощь с раскрытием всех элементов дерева меню

16 мая 2017 - 07:06

Привет, форумчане! Снова нужна ваша помощь. Есть дерево меню,
http://joxi.ru/J2beaDQFkYzvm6
По xpath (.//*[@name='org_struct_admin1']//table/tbody/tr/td[1]/img) нахожу все элементы которые мне нужны,
клик делаю если стиль соответствует закрытому меню.
Нужно раскрывать все элементы, что бы просмотреть содержимое и найти нужное.
Сделал вот такую конструкцию:

 public void openStructureTree(){
        List<WebElement> elements=driver.findElements(By.xpath(".//*[@name='org_struct_admin1']//table/tbody/tr/td[1]/img"));
        for (WebElement element:elements){
            String opentree= element.getAttribute("style");
            System.out.println("Значение для элементов: "+element.getAttribute("style"));
        if (opentree.equals("width: 16px; height: 16px; background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAX0lEQVR42t2TwQkAMQgE07w95JtPIKWkCsGfEH2kgQ25EhQO7qaAYdHdgiTlx4I5J/becUHvHWMMiEhcYGZorYGZY4LLWgu1Vrh7THBRVRDRk+jdBOkbpL6Q7sF3tnAAAyDoFbr+8FgAAAAASUVORK5CYII=\") 0px 0px no-repeat;")) {
            
            click(By.xpath(".//*[@name='org_struct_admin1']//table/tbody/tr/td[1]/img"));
        }
        }
    }

Понятное дело, нажимается первый найденный элемент.
Проблема в том, что каждое меню это добавление новых div, например

Первый элемент - .//*[@name='org_struct_admin1']/div[5]/div/div[2]/table/tbody/tr/td[1]/img

Второй элемент- .//*[@name='org_struct_admin1'']/div[5]/div/div[2]/div/div/table/tbody/tr/td[1]/img

Следовательно не получится замутить что-то вроде div["+i+i"]
Понимаю, что нужно записать найденный элемент с нужным стилем, и клик произвести именно по нему, но вот как это сделать технически, я пока не придумал.


Нужен совет по качественному переиспользованию кода в тестах

02 мая 2017 - 11:23

Сам тест

@DataProvider
    public Object[][] type() {
        return new Object[][]{
                {ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ}
        };
    }
    @DataProvider
    public Object[][] status() {
        return new Object[][]{
                {ДАННЫЕЗАУКАЗАННЫЙПЕРИОД}
        };
    }
    @Test(priority = 4)
    public void testFilterByDataPeriod() {
        app.getUserHelper().loginAs(USER);
        app.getUserHelper().isLoggedInAs(USER);
        app.getNavigationHelper().toDocuments();
        app.getOrderedDocumentsPage().selectLSfromSelectList("130-Б102 ЗАО \"Секретно\"");
        app.getOrderedDocumentsPage().getOrderedDocList();
        //Ручной ввод даты не работает
       // app.getOrderedDocumentsPage().filterByDate("01.04.2017","30.04.2017");
        app.getOrderedDocumentsPage().filterByDocType(ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ);
        app.getOrderedDocumentsPage().filterByStatus(ДАННЫЕЗАУКАЗАННЫЙПЕРИОД);
        app.getOrderedDocumentsPage().showSearchResult();//Просто клик по копне "Показать"
        app.getOrderedDocumentsPage().assertFilterOrderedDocuments(ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ,ДАННЫЕЗАУКАЗАННЫЙПЕРИОД);
    }

Фильтр по типу аналогичен с фильтр по типу

public void filterByStatus(Status status) {
        click(By.xpath("//*[@name=\"Список 2\"]/div[2]"));
        switch (status) {
            case НЕТДАННЫХ:
                driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Нет данных']/div")).click();
                break;
            case ВОБРАБОТКЕ:
                driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='В обработке']/div")).click();
                break;
            case ОТПРАВЛЕН:
                driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Отправлен']/div")).click();
                break;
            case ОШИБКА:
                driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Ошибка']/div")).click();
                break;
            case ДАННЫЕЗАУКАЗАННЫЙПЕРИОД:
                driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Данные за указанный период не найдены']/div")).click();
                break;
        }
    }

Основная проблема здесь.

public void assertFilterOrderedDocuments(Type type,Status status) {
        List<WebElement> elements=driver.findElements(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[1]/td[1]/div/span"));
        int i=1;
        for (WebElement element:elements) {
            String doc_type = element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[" + i + "]/td[3]/div/span")).getText();
            String doc_period=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[" + i + "]/td[4]/div/span")).getText();
            String doc_status=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr["+i+"]/td[5]/div/span")).getText();
            String doc_delivery=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr["+i+"]/td[5]/div/span")).getText();
            String doc_format=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[1]/td["+i+"]/div/span")).getText();
            String doc_LS=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr["+i+"]/td[5]/div/span")).getText();
            i++;
            assertEquals(doc_type,type);
            assertEquals(doc_period, "01.01.2017 - 31.01.2017, 01.02.2017 - 28.02.2017, 01.03.2017 - 31.03.2017, 01.10.2016 - 31.10.2016, 01.11.2016 - 30.11.2016, 01.12.2016 - 31.12.2016");
            assertEquals(doc_status, status);
            assertEquals(doc_delivery, "Andrey.Samoylov@south.rt.ru");
            assertEquals(doc_format, "PDF");
            assertEquals(doc_LS, "ЛС: 8451651");
        }

Суть проблемы:

1) Понятное дело сейчас в сравнении получается подстановка "ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ", что приводит к результату:

Expected :ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ
Actual   :Счет-фактура, Счет, Расшифровка счета, Акт выполненных работ

Какие есть способы для подстановки мне требуемых данных, например алиас, что-то вроде: если выбран -"ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ" то ожидается текст .... и т.д
2) Вообще не уверен в верности решения в методе "assertFilterOrderedDocuments", возможно есть более элегантные решения?


Яндекс.Метрика
Реклама на портале