Я создал отдельный класс для страницы входа в системе, как показано ниже:Геб: Набор текст в поле ввода
class LoginPage extends Page{
static at = { title == "XXX" }
static content = {
username(wait:true) { $(By.xpath('//input[@name="mailAddress"]'))}
password(wait:true) { $(By.xpath('//input[@name="password"]'))}
}
}
А теперь доступ к имени пользователя и паролю, поданному от другого класса под названием HomePageLogin со следующим кодом:
Browser.drive {
to LoginPage
at LoginPage
report "AtLoginPage"
username.value("username")
password.value("password")
}
Но получаю следующее сообщение об ошибке:
Caught: groovy.lang.MissingPropertyException: No such property: username for class: MyPackage.HomePageLogin
groovy.lang.MissingPropertyException: No such property: username for class: MyPackage.HomePageLogin
at MyPackage.HomePageLogin$_run_closure1.doCall(HomePageLogin.groovy:18)
at MyPackage.HomePageLogin$_run_closure1.doCall(HomePageLogin.groovy)
at geb.Browser.drive(Browser.groovy:1061)
at geb.Browser$drive$0.callStatic(Unknown Source)
at geb.Browser.drive(Browser.groovy:1031)
at geb.Browser$drive.call(Unknown Source)
at MyPackage.HomePageLogin.run(HomePageLogin.groovy:12)
Как я могу установить имя пользователя и пароль?
Я могу установить имя и пароль в классе HomePageLogin со следующим кодом:
Browser.drive {
to LoginPage
at LoginPage
report "AtLoginPage"
$("input",name:"mailAddress").value("ID")
$("input",name:"password").value("pass")
}
Но я не хочу, рядные сценариев. Я хочу, чтобы элементы были определены и доступны через соответствующий класс, который является LoginPage в этом случае.
Если мне нужен сложный выбор элементов с помощью XPath, как я должен использовать XPath, чем? –
Вы можете использовать [селекторы xpath] (http://www.gebish.org/manual/current/#using-webdriver-s-code-by-code-class-selectors), но я предполагаю, что ваш xpath в этом случае по какой-то причине был неправильным. –
Я проверил свой XPath с Firebug в браузере Firefox, и все было в порядке. Вот почему я был в замешательстве. Продолжаем поиск обходного пути для использования XPath вместо селектора JQuery. –