我已经设置了Geb + Spock + Groovy,并且能够成功运行一个示例脚本。现在我已经在另一个groovy类中创建了一个方法(这个类我已经在资源文件夹中调用了),我在我的测试类中调用它,但它给了我以下错误:
无法将FileHandling解析为Page的内容或属性 在其导航器上下文中。 FileHandling是你忘记的一个类 导入?
“FileHandling”是我的类的名称,它包含方法。我能够成功地将此方法作为单独的实体运行,但是当我在我的测试类中调用它并通过pom.xml运行它时,我得到了上面的错误
请告诉我如何解决这个问题。导致问题的代码如下。
package test.groovy
import geb.spock.GebReportingSpec
import spock.lang.*
import FileHandling.*
@Stepwise
public class RateTest extends GebReportingSpec {
def "open application home page"() {
when:
go() // uses base url system property
def path_act = "C:/Users/abc.xlsx"
def cellArrayActual = FileHandling.returnExcelResults(path_act, "MEMBER_PREMIUM")
then:
title == "Welcome"
}
}
我觉得问题不在代码中,POM.xml依赖项中有问题,请告诉我它有什么问题。
http://maven.apache.org/xsd/maven-4.0.0.xsd“>
<modelVersion>4.0.0</modelVersion>
<groupId>Automation</groupId>
<artifactId>Automation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version>
</plugin>
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.gmaven.runtime</groupId>
<artifactId>gmaven-runtime-1.8</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.1.8</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.gebish</groupId>
<artifactId>geb-spock</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>0.7-groovy-2.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.37.1</version>
</dependency>
</dependencies>
答案 0 :(得分:1)
如果FileHandling
是您的班级,那么您的导入不应该是import FileHandle
而不是import FileHandle.*
吗?
答案 1 :(得分:0)
使用包名称导入FileHandling类,例如
import test.groovy.FileHandling.*
如果FileHandling没有扩展GEB的Page类,那么你必须实例化下面的类。
static def fileHandle = new FileHandling()
使用上面的def fileHandle对象
调用FileHandling类中的方法 def cellArrayActual = fileHandle.returnExcelResults(path_act, "MEMBER_PREMIUM")
如果FileHandling正在扩展GEB的Page类
class FileHandling extends Page{}
然后你必须在调用方法之前使用At Checker。
when:
go() // uses base url system property
def path_act = "C:/Users/abc.xlsx"
at FileHandling
def cellArrayActual = FileHandling.returnExcelResults(path_act, "MEMBER_PREMIUM")