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

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", возможно есть более элегантные решения?