Я думаю, что ответы Эрди и Джеффа выше, но мне было любопытно узнать, возможно ли это, и для примера того, как может выглядеть рабочий код, я пошел дальше и создал автономный Groovy-скрипт, который запускает спецификацию geb. Приведенный ниже скрипт вводит имя пользователя в поток входа в Yahoo и нажимает следующую кнопку.
@Grapes([
@Grab("org.gebish:geb-spock:2.1"),
@Grab("org.spockframework:spock-core:1.1-groovy-2.4"),
@Grab("org.seleniumhq.selenium:selenium-htmlunit-driver:2.52.0"),
@GrabExclude('org.codehaus.groovy:groovy-all')
])
import geb.*
import geb.spock.*
import spock.util.EmbeddedSpecRunner
import java.util.logging.*
import org.w3c.css.sac.ErrorHandler
import com.gargoylesoftware.htmlunit.SilentCssErrorHandler
new EmbeddedSpecRunner().runClass(YahooSpec)
class YahooSpec extends GebReportingSpec {
def setup() {
// disable css errors output - don't do this for real tests
browser.driver.webClient.cssErrorHandler = new SilentCssErrorHandler()
}
def "should be able to enter username at yahoo"() {
when: "I go to Yahoo mail page"
to YahooLoginPage
then: "there should be a button with value 'Next'"
nextButton.value() == "Next"
when: "I enter a username and click next"
username = "BobbaFett"
nextButton.click()
then: "I should end up at the password page"
at YahooPasswordPage
greeting.text() == "Hello BobbaFett"
}
}
class YahooPasswordPage extends Page {
static url = "https://login.yahoo.com/account/challenge/password"
static at = { title.trim() == "Yahoo" }
static content = {
greeting { $("h1", class: "username")}
}
}
class YahooLoginPage extends Page {
static url = "https://login.yahoo.com/"
static at = { title == "Yahoo - login" }
static content = {
username { $("input#login-username")}
nextButton(to: YahooPasswordPage) { $("input#login-signin") }
}
}
сохранение вышеуказанного в файле test.groovy
и запуск:
~> groovy test.groovy
выполняет спецификацию. Следует отметить, что первый запуск займет некоторое время, так как скрипт загружает зависимости. Следует также отметить, что использование несуществующего имени пользователя нарушит тест, поскольку тест предполагает, что Yahoo отправит вас на страницу пароля после нажатия кнопки «Далее».
Проверено на:
Groovy Version: 2.4.15 JVM: 1.8.0_161 Vendor: Oracle Corporation OS: Mac OS X