t.me/atinfo_chat Telegram группа по автоматизации тестирования

WebAppDriver не проходит тест, если программа не запущена

java
webdriver
selenium
maven
testng
appium
Теги: #<Tag:0x00007f21d6b85d68> #<Tag:0x00007f21d6b85b38> #<Tag:0x00007f21d6b85958> #<Tag:0x00007f21d6b85728> #<Tag:0x00007f21d6b85390> #<Tag:0x00007f21d6b851d8>

(Pavel) #1

Всем привет! Пробую для автоматизации тестирования связку 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;
    }
}

}

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

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


(Viktor) #2

ClientSession.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS
Не успевает за 2 секунды загрузится поставьте больше время


(Pavel) #3

Я уже и явную паузу ставил

Поставил ClientSession.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS), не помогло
Поставил паузу Thread.sleep(10000) эффект тот же


(Viktor) #4

Все что в try успешно проходит?


(Pavel) #5

Всё что в BeforeClass проходит успешно.
А вот дальше начинаются ошибки


(Viktor) #6

Ну так там трай кетч, без него все ок? В catch не проваливается?


(Pavel) #7

Убрал try catch не помогло

Вот так вот работает
ClientSession = new WindowsDriver(new URL(“http://127.0.0.1:4723”), cap);
ClientSession = new WindowsDriver(new URL(“http://127.0.0.1:4723”), cap);


(Pavel) #8

Т.е. как я понял, при первом запуске ClientSeesion не формирует список элементов и обратиться к ним не может


(Viktor) #9

Попробуй задержку между двумя этими строками
ClientSession = new WindowsDriver(new URL(“http://127.0.0.1:4723”), cap);
ClientSession.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);


(Pavel) #10

Не помогло(


(Viktor) #11

Я когда пробовал, помню нужно было дождаться что процесс WinAppDriver запущен, так как вылетала ошибка, но такого как у вас вроде небыло.


(Pavel) #12

А с Winium.Desktop.Driver работали?


(Viktor) #13

Не, только Appium он вроде как по популярнее.


(Pavel) #14

Не подскажите, где почитать про этот инструмент поподробнее?


(Viktor) #15

Я на c# делал, в основном первые ссылки по запросу appium tutorial


https://www.guru99.com/introduction-to-appium.html


(Pavel) #16

Спасибо)