Geb测试时,浏览器会多次打开

时间:2016-01-07 17:36:22

标签: selenium-webdriver spring-boot selenium-chromedriver spock geb

我为简单的Spring Boot Web应用程序编写了以下测试:

@SpringApplicationConfiguration(classes=[PDK])
@WebIntegrationTest
@DirtiesContext
class GebMainpageSpec extends GebSpec {

    @Autowired
    WebApplicationContext context;

    def setup() {

        System.setProperty("webdriver.chrome.driver", "chromedriver/win32/chromedriver.exe");

        browser.driver = new ChromeDriver();
        browser.baseUrl = "http://localhost:8080/";


    }

    def 'Static page present and works, check without pages'() {

        when:
            go ""

        then:
            assert title == "MyApp"

    }

    def 'Static page present and works, check WITH pages'() {
        when:
            to Mainpage

        then:
            LoginWithFormUsername.value() == "root"

    }


}

这些测试显然是有效的,即根据页面数据传递或失败。

问题在于它打开了两个Chrome浏览器实例(按测试次数计算)。

如何预防?可能是重用浏览器?或者可能在每次测试后关闭它?

更新

如果我添加如下内容

def cleanupSpec() {
    browser.driver.quit()
}

然后我的所有测试都开始运行两次,而且,他们每次尝试使用HtmlUnit(即使用“内存”网络浏览器,而不是Chrome)。

1 个答案:

答案 0 :(得分:1)

使用GebSpec时,不应该自己实例化驱动程序,因为它已经通过懒惰的getBrowser() method初始化的浏览器实例处理驱动程序实例的生命周期。

通过how Geb interacts with WebDriver instances查看“The Book of Geb”中有关configuring the driver to be usedthe config script的各个部分以了解详情。