Всем привет!
Написал тест для проверки появления окна при определенных действиях. Ищу окно по параметру 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.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; 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(); } @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, хотя вижу, что окно появляется