2016-12-30 72 views
1

我使用webdriver的硒3.0和硒的Javajava.lang.IllegalStateException:眼睛无法打开

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

对于视觉测试AppliToolsEyes 2.54写下下面的代码 -

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)

回答

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]