2016-06-01 1 views
2

Я создал отдельный класс для страницы входа в системе, как показано ниже:Геб: Набор текст в поле ввода

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 в этом случае.

ответ

1

Если $("input",name:"") селекторы работают, попробуйте поместить те в объект страницы, как это:

class LoginPage extends Page { 
    static at = { title == "XXX" } 
    static content = { 
     username(wait:true) { $("input",name:"mailAddress") } 
     password(wait:true) { $("input",name:"password") } 
    }  
} 
+0

Если мне нужен сложный выбор элементов с помощью XPath, как я должен использовать XPath, чем? –

+0

Вы можете использовать [селекторы xpath] (http://www.gebish.org/manual/current/#using-webdriver-s-code-by-code-class-selectors), но я предполагаю, что ваш xpath в этом случае по какой-то причине был неправильным. –

+0

Я проверил свой XPath с Firebug в браузере Firefox, и все было в порядке. Вот почему я был в замешательстве. Продолжаем поиск обходного пути для использования XPath вместо селектора JQuery. –