1

我将 Selenium WebDriver 3.0 和 AppliToolsEyes 2.54 用于 selenium-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)

4

2 回答 2

2

您需要使用该eyes.open()方法。然后,您在 open 方法中传递您的 webdriver 等,以及其他要初始化的参数eyes

从他们的 SDK:driver = eyes.open(driver, appName, testName, viewportSize);是初始化 Eyes 的正确方法。

请参阅他们的 SDK 以获得更多帮助: https ://applitools.atlassian.net/wiki/display/Java/SDK+Guide

于 2016-12-30T15:35:32.410 回答
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(); 这种设置浏览器大小的方式可能会导致不稳定的视觉测试——你应该在睁眼时指定一个视口大小。

有关更多信息,请查看有关在 Applitools 测试中设置视口大小的文章,或联系support@applitools.com

于 2017-01-01T10:12:39.983 回答