java.lang.IllegalStateException: глаза не открыты

Я использую Selenium WebDriver 3.0 и AppliToolsEyes 2.54 для селена-Java

<dependency>
            <groupId>com.applitools</groupId>
            <artifactId>eyes-selenium-java</artifactId>
            <version>2.54</version>
</dependency>

Для визуального тестирования написал следующий код -

private WebDriver driver;
private Eyes eyes;
private static final String url = "http://www.google.com";

@BeforeClass
public void setUp(){
    eyes = new Eyes();
    System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir") + "//src//test//resources//geckodriver.exe");
    driver = new FirefoxDriver();
    driver.manage().window().maximize();
}

@AfterClass
public void tearDown(){
    eyes.abortIfNotClosed();
    driver.quit();
}

@Test
public void visualTest(){ 
    eyes.checkWindow();
    driver.get(url);
    eyes.checkWindow();
    eyes.close();
}

но получаю следующую ошибку при запуске кода для eyes.checkWindow()

java.lang.IllegalStateException: Eyes not open at com.applitools.utils.ArgumentGuard.isValidState(ArgumentGuard.java:117) at com.applitools.eyes.EyesBase.checkWindowBase(EyesBase.java:977) at com.applitools.eyes.Eyes.checkWindow(Eyes.java:359) at com.applitools.eyes.Eyes.checkWindow(Eyes.java:335) at com.applitools.eyes.Eyes.checkWindow(Eyes.java:325)

2 ответа

Вам нужно использовать eyes.open() метод. Затем вы передаете свой веб-драйвер и т. Д. В метод open вместе с другими параметрами для инициализации. eyes,

Из их SDK: driver = eyes.open(driver, appName, testName, viewportSize); это правильный способ инициализации Eyes.

См. Их SDK для получения дополнительной помощи: https://applitools.atlassian.net/wiki/display/Java/SDK+Guide

Чтобы решить эту проблему, вам нужно открыть глаза, прежде чем проверять окно.

Один из способов сделать это - добавить следующую строку в начале вашего теста следующим образом:

@Test
public void visualTest(){ 
    driver = eyes.open(driver, appName, testName, new RectangleSize(width, height));
    eyes.checkWindow();
    driver.get(url);
    eyes.checkWindow();
    eyes.close();
}

В качестве альтернативы добавьте правило JUnit, которое будет открывать глаза отдельно для каждого теста:

@Rule
    public TestWatcher watcher = new TestWatcher() {
        protected void starting(Description description) {
            eyes.open(driver, appName, description.getMethodName(), new RectangleSize(width, height) );
        }
    };

По другому вопросу я видел, что в вашем тесте вы вызываете:driver.manage (). Window(). Maximize(); Этот способ установки размера браузера может вызвать нестабильные визуальные тесты - вы должны указать размер области просмотра при открытии глаз.

Для получения дополнительной информации, пожалуйста, проверьте эту статью относительно установки размера области просмотра в тестах Applitools, или свяжитесь с support@applitools.com

Другие вопросы по тегам