我正在使用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)
您需要使用eyes.open()
方法。然后,您将WebDriver等通过开放方法以及其他参数来初始化eyes
。
从他们的SDK:driver = eyes.open(driver, appName, testName, viewportSize);
是初始化眼睛的正确方法。
有关进一步的帮助,请参阅他们的SDK:https://applitools.atlassian.net/wiki/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()。最大化(); 这样可以设置浏览器大小的方式可能会导致不稳定的视觉测试 - 睁开眼睛时应该指定一个视口大小。
有关更多信息,请查看有关设置Applitools测试中的视口大小的本文,或联系support@applitools.com