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

Автоматизатор мобильных приложений
онлайн, начало 11 августа
Тестирование безопасности
онлайн, начало 11 августа
Тестирование мобильных приложений
онлайн, начало 11 августа
Автоматизация тестирования REST API на Python
онлайн, начало 11 августа

Публикации pbezpal

39 публикаций создано pbezpal (учитываются публикации только с 05 августа 2020)



#176506 Как лучше организовать архитектуру тестов

Отправлено автор: pbezpal 13 мая 2020 - 09:49 в Про тестирование обо всём подряд

Всем привет! У нас сейчас занимаются написанием автотестов два человека, один из которых я.

Я выношу всю реализацию в раздел main, а сами тесты выношу в раздел test

 

ffeeb5c57f3a99e8e9191969d4a0e0ae0af78e19

 

Коллега все делает в разделе test

ccc0831c122b5337e016d1493db989b756c15584

 

Интересно ваше мнение по поводу того, как лучше реализовывать проект. Всё делать в разделе test или всё же всю обработку выносить в раздел main. Спасибо




#174261 Ошибка при запуске selenoid в docker-compose

Отправлено автор: pbezpal 29 октября 2019 - 13:59 в Управление тестированием

Решил проблему. Было некорректное имя конфигурационного файла. Должно быть $PWD/selenoid/browsers.json, а у меня было $PWD/selenoid/browser.json

Мучался несколько часов с этой ошибкой. Фух




#174260 Ошибка при запуске selenoid в docker-compose

Отправлено автор: pbezpal 29 октября 2019 - 13:17 в Управление тестированием

Всем привет! Я только начал изучать docker и как с ним работать. Никак не получается запустить selenoid в docker-compose

Создал docker-compose.yml

 

version: '3'
services:
  selenoid:
    network_mode: bridge
    image: aerokube/selenoid:latest-release
    container_name: "selenoid"
    volumes:
      - "$PWD/selenoid:/etc/selenoid"
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "$PWD/selenoid/video:/opt/selenoid/video"
      - "$PWD/selenoid/logs:/opt/selenoid/logs"
    environment:
      - OVERRIDE_VIDEO_OUTPUT_DIR=$PWD/selenoid/video
    command: ["-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video", "-log-output-dir", "/opt/selenoid/logs"]
    ports:
      - "4444:4444"
  selenoid-ui:
    image: aerokube/selenoid-ui
    container_name: "selenoid-ui"
    network_mode: bridge
    links:
      - selenoid
    ports:
      - "8080:8080"
    command: ["--selenoid-uri","http://selenoid:4444"]
  jenkins:
    image: "jenkins:latest"
    container_name: "jenkins"
    volumes:
      - "/home/sysadm/rmo_test_docker/jenkins:/var/jenkins_home"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      JENKINS_HOST_HOME: "/home/sysadm/jenkins_home"
    ports:
      - 8088:8080
      - 5000:5000
      - 50000:50000

jenkins и selenoid-ui запускаются и работают корректно, но selenoid выдает такое сообщение в логи:

sysadm@ubuntu:~/rmo_test_docker$ docker-compose logs -f selenoid
Attaching to selenoid
selenoid       | 2019/10/29 12:54:44 [-] [INIT] [Loading configuration files...]
selenoid       | 2019/10/29 12:54:44 [-] [INIT] [/usr/bin/selenoid: browsers config: read error: open /etc/selenoid/browsers.json: no such file or directory]
selenoid       | 2019/10/29 12:55:57 [-] [INIT] [Loading configuration files...]
selenoid       | 2019/10/29 12:55:57 [-] [INIT] [/usr/bin/selenoid: browsers config: read error: open /etc/selenoid/browsers.json: no such file or directory]
selenoid exited with code 1

Кто сталкивался с такой проблемой и, как победили её?




#173681 Автоматизированное тестирование/запись кликов

Отправлено автор: pbezpal 10 сентября 2019 - 11:06 в Автоматизированное тестирование

Selenium IDE (если еще жив), Katalon

Жив. Недавно обучение по нему прошёл




#173286 Selenide allure репорт генирируется без шагов и скриншотов

Отправлено автор: pbezpal 12 августа 2019 - 06:26 в Автоматизированное тестирование

 

 

--clean уберите

 

Зачем? Это никак не влияет на построение репортов!!!

 

Для прикрепления файлов к тестам нужно использовать аннотацию

@Attachment

Вот мой код

@Attachment(value = "{0}", type = "video/mp4")
public byte[] attachVideo(){
try{
String tmpDir = ".\\Videos\\tmp";
String workDir = ".\\Videos";
File video = copyVideo(tmpDir, workDir);

return Files.toByteArray(video);
} catch (Exception ignored) {
return new byte[0];
}
}

Для шагов выполнения теста в репорте используется аннотация 

@Step

Пример

@Step("Вызываем окно 'Все вызовы' через главное меню")
public WindowCalls callWindowCallsMainMenu() {
List<WebElement> itemMenu = clickMainMenu();
if (itemMenu.size() > 0) itemMenu.get(0).click();
else System.out.println("Main menu is not available");

return this;
}

https://habr.com/ru/...ru/blog/337386/

Прикрепленные изображения

  • allure.png



#173153 Как передать разные capabilities? (WebDriver)

Отправлено автор: pbezpal 01 августа 2019 - 07:34 в Автоматизированное тестирование

Используйте WebDriverFactory, очень удобная вещь

 

https://www.selenium...verfactory.html

 

Вот мой пример, правда с использованием Winium, но думаю смысл понятен

cap = new DesiredCapabilities();
//System.out.println("Инициализирован WebDriver на порту 9999");
cap.setCapability("app", "C:\\Program Files (x86)\\SoftPhone\\CLIENT\\SoftPhoneClient.exe");
//System.out.println("Клиент it-phone запущен");
cap.setCapability("launchDelay", "5");

try {
return WebDriverPool.DEFAULT.getDriver(new URL("http://localhost:9999"), cap);
} catch (MalformedURLException e) {
return null;
}



#173152 Не отрабатывает второй actions

Отправлено автор: pbezpal 01 августа 2019 - 07:22 в Автоматизированное тестирование

Всем привет!

Столкнулся с такой проблемой, что действия Actions не выполняются одно за другим.

Первый actions

public void callPropertiesClient(){
 if(isWaitElement(nameIconClientBy, 10, "",7)) {
  actions.contextClick(driver.findElement(nameIconClientBy)).perform();
  driver.findElement(contextMenuBy).findElement(propertiesBy).click();
}
}

Здесь кликаю правой кнопкой мыши на иконку на рабочем столе и нажимаю “Свойства”

Далее меняю свойство запуска программы и нажимаю ОК

public WebElement getElementTextObject(){ return driver.findElements(textFieldBy).get(1); }

public void setPropertiesClient(String textObject){
 getElementTextObject().clear();
 getElementTextObject().sendKeys(textObject);
}

public void clickOkPropertiesClient(){
 driver.findElement(buttonOkBy).click();
 if(isWaitElement(buttonContinuesBy, 10, "", 7)) driver.findElement(buttonContinuesBy).click();
}

Затем двойным кликом запускаю программу

public void clickIconClient(){
 if(isWaitElement(nameIconClientBy, 10, "",7)) actions.doubleClick(driver.findElement(nameIconClientBy)).perform();
}

Так вот этот двойной клики по иконке не отрабатывает. Хотя если запускаю просто двойной клик, то работает прекрасно. Как сделать, чтобы второй actions отрабатывал? Спасибо!




#173096 JUnit 5 Timeout

Отправлено автор: pbezpal 29 июля 2019 - 09:20 в Автоматизированное тестирование

Всем привет!

 

В JUnit 5 появилась новая возможность обработки времени тестов. Я попробовал оба варианта

 

При таком подходе, если время выполнения теста больше заданного, в моём случае 30 секунд, то тест всё равно выполняется, но на выходе получаю ошибку

@Test
void test_Call_Main_Window_Icon_Tree() {
assertTimeout(ofSeconds(30), () ->{
windowMain.getIconClientPanelTree().click();
assertTrue(windowMain.isMainWindow(), "Вызов главного окна через иконку в трее не работает");
}, () -> "Тест выполняется больше 30 секунд");
}

Но если использовать такой ассерт, то тест выполняется бесконечно долго и никакой ошибки не выдаёт. Хотя вроде бы тест должен падать без выполнения.

@Test
void test_Call_Main_Window_Icon_Tree() {
assertTimeoutPreemptively(ofSeconds(30), () ->{
windowMain.getIconClientPanelTree().click();
assertTrue(windowMain.isMainWindow(), "Вызов главного окна через иконку в трее не работает");
}, () -> "Тест выполняется больше 30 секунд");
}

В первом случае понятная ситуация, а вот почему во втором тест не падает?




#172928 Ошибка при запуске тестов из консоли

Отправлено автор: pbezpal 15 июля 2019 - 13:37 в Автоматизированное тестирование

И это победил) 

 

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M3</version>
                <configuration>
                    <trimStackTrace>false</trimStackTrace>
                    <includes>
                        <!--<include>**\WindowLoginTest.java</include>
                        <include>**\WindowMainTest.java</include>
                        <include>**\WindowSearchContactsTest.java</include>
                        <include>**\WindowCallsTest.java</include>-->
                        <include>**\testWindowLogin.java</include>
                    </includes>
                    <!--<excludes>
                        <exclude>**\NewTestClient.java</exclude>
                    </excludes>-->
                </configuration>
                <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-surefire-provider -->
                <dependencies>
                    <dependency>
                        <groupId>org.junit.platform</groupId>
                        <artifactId>junit-platform-surefire-provider</artifactId>
                        <version>1.3.2</version>
                        <!--<scope>test</scope>-->
                    </dependency>
                </dependencies>
            </plugin>



#172927 Ошибка при запуске тестов из консоли

Отправлено автор: pbezpal 15 июля 2019 - 12:36 в Автоматизированное тестирование

Если в IDE нормально стартует то проблема где-то в зависимостях которые вы в pom прописали. У вас же была ошибка и вы туда какую-то зависимость подтянули, вот отсюда и нужна плясать

Все оказалось проще! Junit 5 не поддерживает аннотацию 

@RunWith(Parameterized.class)

После того, как убрал аннотацию ошибка перестала появляться, но и тесты из консоли перестали запускаться(((




#172900 Ошибка при запуске тестов из консоли

Отправлено автор: pbezpal 12 июля 2019 - 11:15 в Автоматизированное тестирование

Всем привет!

 

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

 

package ru.minicom.itphone.client;


import org.junit.Assert;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.openqa.selenium.WebDriver;


import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Collection;


import static junit.framework.Assert.assertTrue;


@RunWith(Parameterized.class)
public class WindowLoginParametersTest {
    //private static String str = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяƒˆŠŒŽ˜šœžŸ¡¢£¥¨ª¯²³´¸¹º¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
    public static String str = "!\"#$%&";
    private static StartTest start = new StartTest();
    private static Process shell = null;
    private static WebDriver driver = null;
    private static WindowLogin windowLogin = null;
    private static String profile = System.getProperty("user.home") + "\\AppData\\Roaming\\IT-Phone\\Profiles";;


    @BeforeAll
    public static void startTest(){
        try {
            Assert.assertTrue("Севрер " + start.getServer() + " недоступен", start.pingServer());
        } catch (IOException e) {
            e.printStackTrace();
        }


        try {
            shell = start.RunWinum();
        } catch (IOException e) {
            e.printStackTrace();
        }


        Assert.assertNotNull("Winium.Desktop.Driver не запущен...", shell);


        start.deleteFolderProfile(new File(profile));


        try {
            driver = start.startClient();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }


        Assert.assertNotNull("RemoteWebDriver не запущен...",driver);


        windowLogin = new WindowLogin(driver);
    }


    @Parameterized.Parameters(name = "{0}")
    public static Collection<Character> Symbols(){
        ArrayList<Character> data = new ArrayList<>();


        for (char c : str.toCharArray()) data.add(c);


        return data;
    }


    @Parameterized.Parameters(name = "{0}")
    public static Collection<String> Text(){
        ArrayList<String> data = new ArrayList<>();
        String tempStr = "";


        for (char c : str.toCharArray()){
            tempStr = tempStr + c;
            if(tempStr.length() > 32) break;
            data.add(tempStr);
        }


        return data;
    }


    /*@Parameterized.Parameters(name = "{0}")
    public static Collection<String> textServer(){
        ArrayList<String> data = new ArrayList<>();
        String tempStr = "";


        for (char c : str.toCharArray()){
            tempStr = tempStr + c;
            data.add(tempStr);
        }


        return data;
    }*/


    @ParameterizedTest
    @MethodSource("Symbols")
    public void test_Symbols_Login(char symbol){
        windowLogin.setLogin(Character.toString(symbol));
        char[] rez = windowLogin.getLogin().toCharArray();
        assertTrue(symbol == rez[0]);
    }


    @ParameterizedTest
    @MethodSource("Text")
    public void test_Text_Login(String text){
        windowLogin.setLogin(text);
        assertTrue(text.equals(windowLogin.getLogin()));
    }


    /*@ParameterizedTest
    @MethodSource("Symbols")
    public void test_Symbols_Password(char symbol){
        windowLogin.setPassword(Character.toString(symbol));
        System.out.println("Password: " + windowLogin.getPassword());
        char[] rez = windowLogin.getPassword().toCharArray();
        assertTrue(symbol == rez[0]);
    }*/


    @ParameterizedTest
    @MethodSource("Symbols")
    public void test_Symbols_Server(char symbol){
        windowLogin.setServer(Character.toString(symbol));
        char[] rez = windowLogin.getServer().toCharArray();
        assertTrue(symbol == rez[0]);
    }


    /*@ParameterizedTest
    @MethodSource("textServer")
    public void test_Text_Server(String text){
        windowLogin.setServer(text);
        assertTrue(text.equals(windowLogin.getServer()));
    }*/


    @AfterAll
    public static void tearDown() {
        windowLogin.clickYesExitConfirmForm();
        Assert.assertFalse(windowLogin.isAvailableLoginWindow());
        if(shell != null) shell.destroy();
    }
}

Подключил необходимые библиотеки в maven

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>TestITPhoneClient</groupId>
    <artifactId>ru.minicom.itphone.client</artifactId>
    <version>1.0</version>
    <name>TestITPhoneClient</name>
    <url>http://maven.apache.org</url>


    <properties>
        <!--region General-->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!--<java.version>11</java.version>-->
        <java.version>1.8</java.version>
        <!--endregion-->
        <!--region Libs -->
        <selenium-java.version>3.141.59</selenium-java.version>
        <sikulixapi.version>1.1.2</sikulixapi.version>
        <jadb.version>94ebf38</jadb.version>
        <junit.version>4.12</junit.version>
        <junit.jupiter.version>5.5.0</junit.jupiter.version>
        <junit.parameters.version>1.1.1</junit.parameters.version>
        <ant.version>1.10.6</ant.version>
        <!--endregion-->
        <!--region Plugins-->
        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <maven-jar-plugin.version>3.1.2</maven-jar-plugin.version>


        <!--endregion-->
    </properties>
    <repositories>
        <repository>
            <id>Mulesoft</id>
            <url>https://repository.mulesoft.org/nexus/content/repositories/public</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>${selenium-java.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/pl.pragmatists/JUnitParams -->
        <dependency>
            <groupId>pl.pragmatists</groupId>
            <artifactId>JUnitParams</artifactId>
            <version>${junit.parameters.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency><!-- https://mvnrepository.com/artifact/com.sikulix/sikulixapi -->
            <groupId>com.sikulix</groupId>
            <artifactId>sikulixapi</artifactId>
            <version>${sikulixapi.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.github.vidstige</groupId>
                    <artifactId>jadb</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.github.vidstige</groupId>
            <artifactId>jadb</artifactId>
            <version>${jadb.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.maven.surefire/surefire-junit4 -->
        <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit4</artifactId>
            <version>3.0.0-M3</version>
        </dependency>
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>6.0.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/junit/junit-dep -->
        <!--<dependency>
            <groupId>junit</groupId>
            <artifactId>junit-dep</artifactId>
            <version>4.11</version>
            <type>pom</type>
            <scope>test</scope>
        </dependency>-->
        <!-- https://mvnrepository.com/artifact/org.junit/junit5-engine -->
        <dependency>
            <groupId>org.junit</groupId>
            <artifactId>junit5-engine</artifactId>
            <version>5.0.0-ALPHA</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-commons -->
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-commons</artifactId>
            <version>1.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine -->
        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.5.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>3.0.0-M3</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin.version}</version>
            </plugin>
            <!--<plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven-jar-plugin.version}</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>ru.minicom.itphone.client.RunTests</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M3</version>
                <configuration>
                    <trimStackTrace>false</trimStackTrace>
                    <includes>
                        <include>**\WindowLoginTest.java</include>
                        <include>**\WindowMainTest.java</include>
                        <include>**\WindowSearchContactsTest.java</include>
                        <include>**\WindowCallsTest.java</include>
                        <!--<include>**\WindowLoginParametersTest.java</include>-->
                    </includes>
                    <!--<excludes>
                        <exclude>**\NewTestClient.java</exclude>
                    </excludes>-->
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>3.0.0-M3</version>
                <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-failsafe-plugin -->
                <!--<dependencies>
                    <dependency>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <version>3.0.0-M3</version>
                        <scope>test</scope>
                    </dependency>
                </dependencies>-->
            </plugin>
            <plugin>
                <groupId>org.jvnet.maven-antrun-extended-plugin</groupId>
                <artifactId>maven-antrun-extended-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.ant</groupId>
                        <artifactId>ant-junit</artifactId>
                        <version>${ant.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.ant</groupId>
                        <artifactId>ant-trax</artifactId>
                        <version>1.8.0</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>test-reports</id>
                        <phase>test</phase>
                        <configuration>
                            <tasks>
                                <junitreport todir="target/surefire-reports">
                                    <fileset dir="target/surefire-reports">
                                        <include name="**/*.xml" />
                                    </fileset>
                                    <report format="noframes" todir="target/surefire-reports/html" />
                                </junitreport>
                                <!--<tstamp>
                                    <format property="datetime" pattern="yyyyMMddHHmmss" />
                                </tstamp>-->
                                <move
                                        file="target/surefire-reports/html/junit-noframes.html"
                                        tofile="target/surefire-reports/html/client-test-report.html" />
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Теперь при запуске тестов из консоли

mvn compile && mvn package -Dmaven.test.skip=true && mvn test

У меня вываливается сообщение об ошибке

 

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
июл 12, 2019 2:15:13 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-vintage' failed to discover tests
org.junit.platform.commons.JUnitException: Failed to parse version of junit:junit: 3.8.1
        at org.junit.vintage.engine.JUnit4VersionCheck.parseVersion(JUnit4VersionCheck.java:54)
        at org.junit.vintage.engine.JUnit4VersionCheck.checkSupported(JUnit4VersionCheck.java:37)
        at org.junit.vintage.engine.JUnit4VersionCheck.checkSupported(JUnit4VersionCheck.java:32)
        at org.junit.vintage.engine.VintageTestEngine.discover(VintageTestEngine.java:61)
        at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:168)
        at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:155)
        at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:120)
        at org.apache.maven.surefire.junitplatform.TestPlanScannerFilter.accept(TestPlanScannerFilter.java:56)
        at org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:102)
        at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.scanClasspath(JUnitPlatformProvider.java:143)
        at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:124)
        at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
        at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)

 




#172895 Winium не возвращает значение в поле типа password

Отправлено автор: pbezpal 12 июля 2019 - 06:44 в Автоматизированное тестирование

Привет!
 
Сразу скажу, что хакерством не занимаюсь, но начал изучать Winium, JUnit со всеми их возможностями.
 
Столкнулся вот с какой проблемой, делаю параметрическое тестирование на допустимые символы в окне авторизации и поле пароль не возвращает значение для сравнения. Вот сам тест
 
 
package ru.minicom.itphone.client;


import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.openqa.selenium.WebDriver;


import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Collection;


import static junit.framework.Assert.assertTrue;


@RunWith(Parameterized.class)
public class WindowLoginParametersTest {
    //private static String str = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяƒˆŠŒŽ˜šœžŸ¡¢£¥¨ª¯²³´¸¹º¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
    public static String str = "!\"#$%&";
    private static StartTest start = new StartTest();
    private static Process shell = null;
    private static WebDriver driver = null;
    private static WindowLogin windowLogin = null;
    private static String profile = System.getProperty("user.home") + "\\AppData\\Roaming\\IT-Phone\\Profiles";;


    @BeforeAll
    public static void startTest(){
        try {
            Assert.assertTrue("Севрер " + start.getServer() + " недоступен", start.pingServer());
        } catch (IOException e) {
            e.printStackTrace();
        }


        try {
            shell = start.RunWinum();
        } catch (IOException e) {
            e.printStackTrace();
        }


        Assert.assertNotNull("Winium.Desktop.Driver не запущен...", shell);


        start.deleteFolderProfile(new File(profile));


        try {
            driver = start.startClient();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }


        Assert.assertNotNull("RemoteWebDriver не запущен...",driver);


        windowLogin = new WindowLogin(driver);
    }


    @Parameterized.Parameters(name = "{0}")
    public static Collection<Character> Symbols(){
        ArrayList<Character> data = new ArrayList<>();


        for (char c : str.toCharArray()) data.add(c);


        return data;
    }






    @ParameterizedTest
    @MethodSource("Symbols")
    public void test_Parameters_Login(char symbol){
        windowLogin.setLogin(Character.toString(symbol));
        char[] rez = windowLogin.getLogin().toCharArray();
        assertTrue(symbol == rez[0]);
    }


    @ParameterizedTest
    @MethodSource("Symbols")
    public void test_Parameters_Password(char symbol){
        windowLogin.setPassword(Character.toString(symbol));
        char[] rez = windowLogin.getPassword().toCharArray();
        assertTrue(symbol == rez[0]);
    }


    @ParameterizedTest
    @MethodSource("Symbols")
    public void test_Parameters_Server(char symbol){
        windowLogin.setServer(Character.toString(symbol));
        char[] rez = windowLogin.getServer().toCharArray();
        assertTrue(symbol == rez[0]);
    }


    @AfterAll
    public static void tearDown() {
        windowLogin.clickYesExitConfirmForm();
        Assert.assertFalse(windowLogin.isAvailableLoginWindow());
        if(shell != null) shell.destroy();
    }
}

 




#172893 JUnit + Jupiter ошибка инициализации

Отправлено автор: pbezpal 11 июля 2019 - 16:07 в Автоматизированное тестирование

Разобрался, нужно было подгрузить в pom.xml 

<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.5.0</version>
<scope>test</scope>
</dependency>



#172892 JUnit + Jupiter ошибка инициализации

Отправлено автор: pbezpal 11 июля 2019 - 16:00 в Автоматизированное тестирование

Всем привет!

 

Написал параметрический тест. Вроде все тестовые случаи проходит успешно, но почему-то ругается на инициализацию

 

Class WindowLoginParametersTest

package ru.minicom.itphone.client;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.openqa.selenium.WebDriver;

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Collection;

import static junit.framework.Assert.assertTrue;

@RunWith(Parameterized.class)
public class WindowLoginParametersTest {
private static String str = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяƒˆŠŒŽ˜šœžŸ¡¢£¥¨ª¯²³´¸¹º¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
//public static String str = "!\"#$%&";
private static String className = Thread.currentThread().getStackTrace()[1].getClassName();

@ClassRule
public static StartingTest startTest = new StartingTest(className);

private static Process shell = null;

static {
try {
shell = startTest.getProcess();
} catch (IOException e) {
e.printStackTrace();
}
}

private static WebDriver driver = null;

static {
try {
driver = startTest.getWebDriver();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}

private WindowLogin windowLogin = new WindowLogin(driver);

@ClassRule
public static FinishedTest finish = new FinishedTest(shell, className);

@Before
public void setUp() throws MalformedURLException {
startTest.getWebDriver();
Assert.assertNotNull("RemoteWebDriver не запущен...",driver);
}

@After
public void tearDown() {
windowLogin.clickYesExitConfirmForm();
Assert.assertFalse(windowLogin.isAvailableLoginWindow());
}

@Parameterized.Parameters(name = "{0}")
public static Collection<Character> data(){
ArrayList<Character> data = new ArrayList<>();

for (char c : str.toCharArray()) data.add(c);

return data;
}

@ParameterizedTest
@MethodSource("data")
public void testParameters(char symbol){
windowLogin.setLogin(Character.toString(symbol));
char[] rez = windowLogin.getLogin().toCharArray();
assertTrue(symbol == rez[0]);
}
}

Class StartingTest

package ru.minicom.itphone.client;

import org.junit.Assert;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
import org.openqa.selenium.WebDriver;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;

public class StartingTest extends TestWatcher {

private StartTest start = new StartTest();
private Process shell = null;
private WebDriver driver = null;
private WindowLogin windowLogin = null;
private String login = start.getLogin();
private String password = start.getPassword();
private String server = start.getServer();
private String className;
private String profile = System.getProperty("user.home") + "\\AppData\\Roaming\\IT-Phone\\Profiles";;

public StartingTest(){}

public StartingTest(String className){
this.className = className;
}

@Override
public void starting(Description description){
try {
Assert.assertTrue("Севрер " + start.getServer() + " недоступен", start.pingServer());
} catch (IOException e) {
e.printStackTrace();
}

try {
shell = getProcess();
System.out.println("Process = " + shell);
} catch (IOException e) {
e.printStackTrace();
}

Assert.assertNotNull("Winium.Desktop.Driver не запущен...", shell);

if( ! className.contains("WindowLoginTest") || ! className.contains("WindowLoginParametersTest")){
try {
driver = getWebDriver();
System.out.println("Driver = " + driver);
} catch (MalformedURLException e) {
e.printStackTrace();
}

Assert.assertNotNull("RemoteWebDriver не запущен...",driver);

windowLogin = new WindowLogin(driver);
windowLogin.setDataFields(login, password, server);
windowLogin.clickEnterButton();
}else {
start.deleteFolderProfile(new File(profile));
}
}

public WebDriver getWebDriver() throws MalformedURLException {
return start.startClient();
}

public Process getProcess() throws IOException {
return start.RunWinum();
}

public String getLogin(){
return login;
}
}

CLass FinishedTest

package ru.minicom.itphone.client;

import org.junit.rules.TestWatcher;
import org.junit.runner.Description;

public class FinishedTest extends TestWatcher {

private WindowMain windowMain = null;
private Process shell = null;
private String login;
private String className;

public FinishedTest(WindowMain windowMain, Process shell, String login, String className){
this.windowMain = windowMain;
this.shell = shell;
this.login = login;
this.className = className;
}

public FinishedTest(Process shell, String className){
this.shell = shell;
this.className = className;
}

@Override
public void finished(Description description){
if( ! className.contains("WindowLoginTest") || ! className.contains("WindowLoginParametersTest")) if(windowMain.isAvailableIconAdditionalClientTree()) windowMain.clickExitButton();

if(shell != null) shell.destroy();
}

}

Ошибка

java.lang.Exception: No runnable methods


at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:191)
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:128)
at org.junit.runners.ParentRunner.validate(ParentRunner.java:416)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:84)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65)
at org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters.<init>(BlockJUnit4ClassRunnerWithParameters.java:27)
at org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParametersFactory.createRunnerForTestWithParameters(BlockJUnit4ClassRunnerWithParametersFactory.java:16)
at org.junit.runners.Parameterized.createRunnersForParameters(Parameterized.java:313)
at org.junit.runners.Parameterized.<init>(Parameterized.java:248)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.vintage.engine.discovery.DefensiveAllDefaultPossibilitiesBuilder$DefensiveAnnotatedBuilder.buildRunner(DefensiveAllDefaultPossibilitiesBuilder.java:113)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.vintage.engine.discovery.DefensiveAllDefaultPossibilitiesBuilder.runnerForClass(DefensiveAllDefaultPossibilitiesBuilder.java:56)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.vintage.engine.discovery.ClassSelectorResolver.resolveTestClass(ClassSelectorResolver.java:66)
at org.junit.vintage.engine.discovery.ClassSelectorResolver.resolve(ClassSelectorResolver.java:47)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.lambda$resolve$2(EngineDiscoveryRequestResolution.java:129)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1359)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution.java:174)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution.java:120)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.access$100(EngineDiscoveryRequestResolution.java:53)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$DefaultContext.resolve(EngineDiscoveryRequestResolution.java:227)
at org.junit.vintage.engine.discovery.MethodSelectorResolver.resolveParentAndAddFilter(MethodSelectorResolver.java:56)
at org.junit.vintage.engine.discovery.MethodSelectorResolver.resolve(MethodSelectorResolver.java:40)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.lambda$resolve$2(EngineDiscoveryRequestResolution.java:138)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1359)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution.java:174)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution.java:120)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:87)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.run(EngineDiscoveryRequestResolution.java:80)
at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.resolve(EngineDiscoveryRequestResolver.java:112)
at org.junit.vintage.engine.discovery.VintageDiscoverer.discover(VintageDiscoverer.java:42)
at org.junit.vintage.engine.VintageTestEngine.discover(VintageTestEngine.java:62)
at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:177)
at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:164)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

 




#172819 Winium Desktop Driver не находит окно

Отправлено автор: pbezpal 03 июля 2019 - 05:53 в Автоматизированное тестирование

Кажется решил проблему

driver.switchTo().activeElement()

Получаю тот самый @ClassName='TfrmMain'




#172796 Winium не находит кнопку

Отправлено автор: pbezpal 01 июля 2019 - 12:45 в Автоматизированное тестирование

Попробую расписать поподробнее:

 

Тестирую программу на Windows 10.

  1. Авторизуюсь на сервере
  2. После авторизации, программа сворачивается в иконку, которая находится в tree
  3. Вызываю окно настроек (см. рис. 1)
  4. Переключаюсь на вкладку “Управление” (см. рис. 2)
  5. Во вкладке “Управление” нужно нажать на кнопку “Открыть”

Сейчас дохожу до вкладки “Управление” и дальше Winium не видит кнопки “Открыть”.

Как видно на последнем изображении, элементов “Управление” Winium определяет всего один и это элемент вкладки. Элементов кнопок с названием “Открыть” вообще нет. Можно ли как-то достучаться до элементов кнопок и элемента “Управление” панель? Может есть у кого какие идеи или мысли, потому как у меня пока уже мыслей нет. И в интернете ничего не нашёл подходящего

Прикрепленные изображения

  • 1.png
  • 2.png
  • analize.png



#172793 WinAppDriver кликнуть по tree

Отправлено автор: pbezpal 01 июля 2019 - 11:30 в Автоматизированное тестирование

Как в WinAppDriver кликнуть на tree?




#172765 WinAppDriver + Selenium не может найти элемент

Отправлено автор: pbezpal 28 июня 2019 - 10:04 в Автоматизированное тестирование

Решил пока таким способом

ClientSession = new WindowsDriver(new URL("http://127.0.0.1:4723"), cap);
ClientSession.quit();
ClientSession = new WindowsDriver(new URL("http://127.0.0.1:4723"), cap);

Но сдаётся мне это не совсем правильно




#172762 WinAppDriver + Selenium не может найти элемент

Отправлено автор: pbezpal 28 июня 2019 - 07:57 в Автоматизированное тестирование

Всем привет! Пробую для автоматизации тестирования связку WinAppDriver + Selenium

package ru.minicom.itphone.client;

import io.appium.java_client.windows.WindowsDriver;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.URL;
import java.util.concurrent.TimeUnit;

public class NewTestClient {
private static WindowsDriver ClientSession = null;
private static WebElement Result = null;
private static String wapPath = "C:\\Program Files (x86)\\Windows Application Driver\\";
private static String wapName = "WinAppDriver.exe";
private static ProcessBuilder wap;
private static Process shell;

@BeforeClass
public static void setup() {
try {
/*wap = new ProcessBuilder(wapPath + wapName);
shell = wap.start();*/
DesiredCapabilities cap = new DesiredCapabilities();
//cap.setCapability("app", "Microsoft.WindowsCalculator_8wekyb3d8bbwe!App");
//cap.setCapability("platformName", "Windows");
//cap.setCapability("deviceName", "WindowsPC");
cap.setCapability("app", "C:\\Program Files (x86)\\SoftPhone\\CLIENT\\SoftPhoneClient.exe");
ClientSession = new WindowsDriver(new URL("http://127.0.0.1:4723"), cap);
ClientSession.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
} catch (Exception e){
e.printStackTrace();
}finally {

}
}

@Test
public void checkLoginPage(){
System.out.println(checkLoginWindow());
Assert.assertTrue(checkLoginWindow());
}

@AfterClass
public static void AfterClass(){
Result = null;
if(ClientSession != null){
ClientSession.quit();
}
ClientSession = null;

//shell.destroy();
}

public boolean checkLoginWindow(){
try{
ClientSession.findElementByClassName("TfrmLogin");
return true;
}catch (Exception e){
return false;
}
}
}

Запускаю тест, запускается моя программа, но проверка не проходит.

Но если программа была уже запущена до запуска теста, тогда тест проходит. Что это за баг такой?




#172753 Winium не находит кнопку

Отправлено автор: pbezpal 27 июня 2019 - 14:13 в Автоматизированное тестирование

Всем привет! Уже себе всю голову сломал, но так и не смог постичь тонкости Winium'a

 

У меня открывается окно, в котором я перехожу на вкладку "Управление". Когда переходу на вкладку, появляются элементы, с которыми нужно взаимодействовать. Но т.к. начал только разбираться с Winium, не хватает знаний, как добраться до этой самой кнопки.

 

Уже и вверх ходил, через запрос xpath "parent:: " и мне кажется чего только не перепробовал уже, но не находит кнопку и все.

 

Прикрепленные изображения

  • elementButton.png



#172743 Winium Desktop Driver xpath

Отправлено автор: pbezpal 26 июня 2019 - 14:57 в Автоматизированное тестирование

вот так заработало

window = driver.findElement(By.xpath("*[@ClassName='TfrmSetting']")).isEnabled();



#172742 Winium Desktop Driver xpath

Отправлено автор: pbezpal 26 июня 2019 - 14:47 в Автоматизированное тестирование

Всем привет!

 

Разбираюсь с этим зверем и что-то никак не могу познать Дзен

 

Делаю тест. Вот так тест успешно отрабатывает:

@Test
public void testIconFavorites() throws FindFailed {
additionalIconTree = new AdditionalIconTree(screen, driver);
additionalIconTree.loginServer(login, password, server);
additionalIconTree.openWindowSettings(login);
window = driver.findElement(By.className("TfrmSetting")).isEnabled();
Assert.assertTrue(window);
}

А так долго висит

@Test
public void testIconFavorites() throws FindFailed {
additionalIconTree = new AdditionalIconTree(screen, driver);
additionalIconTree.loginServer(login, password, server);
additionalIconTree.openWindowSettings(login);
window = driver.findElement(By.xpath("//*[@ClassName='TfrmSetting']")).isEnabled(); //Поменял на xpath запрос
Assert.assertTrue(window);
}

В чём я не прав и почему в одном случае всё корректно работает. В другом не работает!

 

Вроде написал xpath запросом тоже самое




#172736 Сборка Maven проекта в jar файл

Отправлено автор: pbezpal 26 июня 2019 - 09:48 в Автоматизированное тестирование

понятно) Значит собирать jar файл не нужно?




#172732 Сборка Maven проекта в jar файл

Отправлено автор: pbezpal 26 июня 2019 - 08:53 в Автоматизированное тестирование

Кстати нашёл неплохое описание для сборки maven

 

http://java-online.r...surefire-plugin




#172731 Сборка Maven проекта в jar файл

Отправлено автор: pbezpal 26 июня 2019 - 08:52 в Автоматизированное тестирование

С 100500 раза получилось собрать jar файл, но всё равно он не запускается(((

 

получился такой pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>TestITPhoneClient</groupId>
<artifactId>ru.minicom.itphone.client</artifactId>
<version>1.0</version>
<name>TestITPhoneClient</name>
<url>http://maven.apache.org</url>

<properties>
<!--region General-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!--<java.version>11</java.version>-->
<java.version>11</java.version>
<!--endregion-->
<!--region Libs -->
<selenium-java.version>3.141.59</selenium-java.version>
<sikulixapi.version>1.1.2</sikulixapi.version>
<jadb.version>94ebf38</jadb.version>
<junit.version>4.13-beta-1</junit.version>
<!--endregion-->
<!--region Plugins-->
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<maven.compiler.release>${java.version}</maven.compiler.release><!-- for compiler plugin version >= 3.8 -->
<maven.compiler.parameters>true</maven.compiler.parameters>
<maven-jar-plugin.version>3.1.2</maven-jar-plugin.version>
<!--endregion-->
</properties>
<repositories>
<repository>
<id>Mulesoft</id>
<url>https://repository.mulesoft.org/nexus/content/repositories/public</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium-java.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency><!-- https://mvnrepository.com/artifact/com.sikulix/sikulixapi -->
<groupId>com.sikulix</groupId>
<artifactId>sikulixapi</artifactId>
<version>${sikulixapi.version}</version>
<exclusions>
<exclusion>
<groupId>com.github.vidstige</groupId>
<artifactId>jadb</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.vidstige</groupId>
<artifactId>jadb</artifactId>
<version>${jadb.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.maven.surefire/surefire-junit4 -->
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit4</artifactId>
<version>3.0.0-M3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
<configuration>
<archive>
<manifest>
<mainClass>ru.minicom.itphone.client.RunTests</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<includes>
<include>**\LoginPageTest.java</include>
</includes>
<excludes>
<exclude>**\MainPageTest.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>

</project>

Класс RunTest

package ru.minicom.itphone.client;

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class RunTests {
public static void main(String[] args){
Result result = JUnitCore.runClasses(LoginPageTest.class);

System.out.println("Total number of tests " + result.getRunCount());

System.out.println("Total number of test failed " + result.getFailureCount());

for(Failure failure : result.getFailures()){
System.out.println(failure.getMessage());
}

System.out.println(result.wasSuccessful());
}
}

И сам проект. После сборки проекта получается файл ru.minicom.itphone.client-1.0.jar. Когда его запускаю, ругается 

 

D:\Project\ITPhone_Firelink\ver.8.0\Tests\ClientTest>java -jar target\ru.minicom.itphone.client-1.0.jar
Error: Could not find or load main class ru.minicom.itphone.client.RunTests

Может дело в том, что класс RunTests находится в директории test?

 

Прикрепленные изображения

  • structure.jpg




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