我需要在每次测试之间关闭浏览器。 Geb 为我创建了浏览器,所以我的印象是 Geb 应该在每次测试之间关闭驱动程序。然而事实并非如此。这是 GebConfig.groovy 的结构和一部分。
test_automation
-functional
--src
---test
---groovy
----spec
-----Test Locations
---resources
----GebConfig.groovy
GebConfig.groovy
waiting {
timeout = 20
}
environments {
chrome {
driver = {
System.setProperty('webdriver.chrome.driver', 'src/test/resources/chromedriver')
new ChromeDriver()
}
}
firefox {
driver = { new FirefoxDriver() }
}
}
我已将 GebSpec 扩展到 CommonGebSpec,以下是我尝试过的多项操作:
CommonGebSpec.groovy
def setup() {
resetBrowser()
getBrowser()
}
def cleanup() {
browser.close()
browser.quit()
}
______________________________
def cleanup() {
browser.clearCookies()
}
______________________________
def cleanup() {
resetBrowser()
}
我已经具体尝试过这些,并且可能有一些变化。有人知道为什么我的浏览器在测试之间不会关闭吗?
谢谢。
最佳答案
这是一个带有 its associated thread 的示例在 Geb 用户列表中。对于回答您的问题来说,这可能有点过分了,但它展示了如何退出并为每个测试启动一个新的浏览器实例。
请注意,每次测试后您都必须自行 quit() 浏览器。
import geb.spock.GebSpec
import pages.RememberMePage
import spock.lang.*
import utils.PageHelper
import org.openqa.selenium.Cookie
class RememberMeLoginSpec extends GebSpec {
@Shared cookieName = "remember-me"
@Shared cookieValue = "initial"
def "login user with remember me checked and close browser"() {
given:
PageHelper.login(browser, "userOne", "password1!", true, false)
cookieValue = driver.manage().getCookieNamed(cookieName).getValue()
browser.close()
}
def "user opens browser"() {
when: "cookie is set and user is logged in"
browser.config.cacheDriver = false
browser.driver = browser.config.driver
RememberMePage rememberMePage = browser.to RememberMePage
// navigate to a page before setting cookie to avoid
// https://code.google.com/p/chromedriver/issues/detail?id=728
go "pageOne"
Cookie cookie = new Cookie(cookieName, cookieValue)
driver.manage().addCookie(cookie)
// navigate to new page to "login" user
go "pageTwo"
then: "username appears in greeting and page requiring full authentication shows login modal"
rememberMePage.navigation.greetingText.text().endsWith("userOne")
rememberMePage.loginModal.loginModal.present
cleanup:
browser.quit()
}
}
关于spock - 盖布和斯波克 : Close Browser Between Each Test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23917230/