Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Тестирование приложений > Winium Desktop Driver не находит окно


Автор: NZero 25.6.2019, 13:19
Всем привет!

Написал тест для проверки появления окна при определенных действиях. Ищу окно по параметру className. Вот мой код для проверки существования окна
Код


import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Pattern;
import org.sikuli.script.Screen;

import java.awt.*;
import java.awt.event.KeyEvent;

public class MainPage {

    HelperClass hclass = new HelperClass();

    private Screen screen;
    private WebDriver driver;
    private By iconAdditionalClientTreeBy = By.name("Поиск контакта");
    private By treeBy = By.name("Шеврон уведомления");
    private By mainWindowBy = By.className("TfrmMain"); //Вот этот className
    private Pattern imgIconClientTreeBy = hclass.newPattern("tree.JPG");
    private Pattern imgMainWindowMenu = hclass.newPattern("mainWindowMenu.jpg");
    private Pattern imgExitButton = hclass.newPattern("exit.jpg");
    private Robot robot;


    public MainPage(Screen screen, WebDriver driver){
        this.screen = screen;
        this.driver = driver;
    }

    //Проверяем, есть ли дополнительная иконка клиента
    public boolean checkIconAdditionalClientTree(){
        try{
            new WebDriverWait(driver, 60).until(ExpectedConditions.presenceOfElementLocated(iconAdditionalClientTreeBy));
            return true;
        }catch (NoSuchElementException e){
            return false;
        }
    }


    public void callMainWindowHotButtons() throws AWTException {
        robot = new Robot();
        if(checkIconAdditionalClientTree()){
            robot.keyPress(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_SHIFT);
            robot.keyPress(KeyEvent.VK_F1);
        }
    }

    public void callMainWindowIconTree(String login) throws FindFailed {
        if(checkIconAdditionalClientTree()){
            screen.click(imgIconClientTreeBy);
            driver.findElement(By.name("[" + login + "] - В сети")).click();
        }

    }

    //Здесь проверяем, что элемент mainWindowBy существует
    public boolean checkMainWindow(){
        try{
            driver.findElement(mainWindowBy);
            return true;
        }catch(NoSuchElementException e){
            return false;
        }
    }

    public void clickExitButton() throws FindFailed {
        screen.click(imgMainWindowMenu);
        screen.click(imgExitButton);
    }

}



Вот тест для проверки окна

Код

import org.junit.*;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Screen;

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

public class MainPageTest {

    private Process shell;
    private WebDriver driver;
    private Screen screen;
    private String profile = System.getProperty("user.home") + "\\AppData\\Roaming\\IT-Phone\\Profiles";;
    private boolean windowMain;
    private String login;
    private String password;
    private String server;

    @Before
    public void setUp() throws IOException {
        StartTest start = new StartTest();
        shell = start.RunWinum();
        start.deleteFolderProfile(new File(profile));
        driver = new RemoteWebDriver(new URL("http://localhost:9999"), start.startClient());
        screen = new Screen();
    }

    @Ignore
    @Test
    public void testCallMainWindowIconTree() throws FindFailed {
        MainPage mainPage = new MainPage(screen, driver);
        LoginPage loginPage = new LoginPage(screen, driver);
        login = "2001";
        password = "o0cJ2uas";
        server = "172.22.50.100";
        loginPage.enterDataFields(login, password, server);
        loginPage.clickEnterButton();
        mainPage.checkIconAdditionalClientTree();
        mainPage.callMainWindowIconTree(login);
        windowMain = mainPage.checkMainWindow();
        mainPage.clickExitButton();
        System.out.println(windowMain);
        Assert.assertTrue(windowMain);
     }

    @After
    public void tearDown(){
        shell.destroy();
    }
}



Тест выдаёт результат false, хотя вижу, что окно появляется 

user posted image
user posted image

Автор: NZero 3.7.2019, 08:50
Кажется я решил эту задачу

Код

driver.switchTo().activeElement();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)