2016-06-27 10 views
0

使用Groovy,TestNG,Geb,我正在尝试编写setup()teardown()方法。为了验证这一点,我已经试过这样:在Geb中调用浏览器不工作

package Rough 


import geb.Browser 
import geb.spock.GebSpec 
import org.openqa.selenium.firefox.FirefoxDriver 
import org.testng.annotations.Test; 

@Test //TestNG 
class InvokeBrowserTest extends GebSpec { 


    //@Test 
    def setup() { 
     // browser.driver.javascriptEnabled = false 
     browser = new Browser(driver: new FirefoxDriver()) 

    } 

    /* def cleanup() { 
     CachingDriverFactory.clearCache() 
    } 
*/ 
    def "can access The Book of Geb via homepage"() { 
     when: 
     to GebHomePage 

     and: 
     highlights.jQueryLikeApi.click() 

     then: 
     sectionTitles == ["Navigating Content", "Form Control Shortcuts"] 
     highlights.jQueryLikeApi.selected 
    } 
} 

错误

FAILED: 
groovy.lang.MissingFieldException: No such field: $spock_sharedField__browser for class: org.codehaus.groovy.runtime.NullObject 
    at groovy.lang.MetaClassImpl.getAttribute(MetaClassImpl.java:2823) 
    at groovy.lang.MetaClassImpl.getAttribute(MetaClassImpl.java:3759) 
    at org.codehaus.groovy.runtime.InvokerHelper.getAttribute(InvokerHelper.java:145) 
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getField(ScriptBytecodeAdapter.java:306) 
    at geb.spock.GebSpec.get_browser(GebSpec.groovy) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
    at org.codehaus.groovy.runtime.metaclass.MethodMetaProperty$GetBeanMethodMetaProperty.getProperty(MethodMetaProperty.java:76) 
    at org.codehaus.groovy.runtime.callsite.GetEffectivePogoPropertySite.getProperty(GetEffectivePogoPropertySite.java:85) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307) 
    at geb.spock.GebSpec.getBrowser(GebSpec.groovy:42) 
    at geb.spock.GebSpec.propertyMissing(GebSpec.groovy:60) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
    at groovy.lang.MetaClassImpl.invokeMissingProperty(MetaClassImpl.java:880) 
    at groovy.lang.MetaClassImpl$12.getProperty(MetaClassImpl.java:2026) 
    at org.codehaus.groovy.runtime.callsite.GetEffectivePogoPropertySite.getProperty(GetEffectivePogoPropertySite.java:85) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307) 
    at Rough.InvokeBrowser.$spock_feature_1_0(InvokeBrowserTest.groovy:26) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86) 
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:643) 
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820) 
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128) 
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) 
    at org.testng.TestRunner.privateRun(TestRunner.java:782) 
    at org.testng.TestRunner.run(TestRunner.java:632) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:366) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361) 
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319) 
    at org.testng.SuiteRunner.run(SuiteRunner.java:268) 
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) 
    at org.testng.TestNG.run(TestNG.java:1064) 
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:113) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:206) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:177) 
+0

看来,问题不是在呈现代码:'没有这样的领域:$ spock_sharedField__browser'和'在g eb.spock.GebSpec.getBrowser(GebSpec.groovy:42)' – RocketRaccoon

+0

如何解决它?我是新的Groovy,Geb – paul

+0

所以,我根据staktrace你有问题与启动浏览器 – RocketRaccoon

回答

0

你混合TestNG的(org.testng.annotations.Test)与斯波克(geb.spock.GebSpec)。鉴于他们都是单元测试框架,您应该使用其中一个或另一个。

1

在盖布,我们必须添加一个名为“GebConfig.groovy”文件资源文件夹下的盖布自动搜索资源文件夹下的文件

GebConfig.groovy文件在这里做以下几点: 1.实例浏览器 2.设置为预设浏览器超时

浏览器实例化如下:

def browserDriver = new ChromeDriver(capabilities) 
browserDriver.manage().window().maximize() 
相关问题