2016-12-30 3 views
1

Я использую Selenium WebDriver 3.0 и AppliToolsEyes 2,54 для селена Явыjava.lang.IllegalStateException: Глаза не открываются

<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)

ответ

1

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

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

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

0

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

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

@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(); Этот способ установки размера браузера может привести к нестабильным визуальным испытаниям - при открытии глаз вам следует указать размер видового экрана.

Для получения дополнительной информации, пожалуйста, проверьте this article относительно установки размера окна просмотра в тестах Applitools или контакт [email protected]

Смежные вопросы