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类来定义和访问元素。
如果我需要与XPath复杂元素的选择,我应该如何使用XPath比? –
你可以使用[xpath selectors](http://www.gebish.org/manual/current/#using-webdriver-s-code-by-code-class-selectors),但我猜你的xpath在这种情况下是不正确的,出于某种原因。 –
我在Firefox浏览器中用Firebug验证了我的XPath,并且没问题。这就是我困惑的原因。仍在搜索使用XPath替代JQuery选择器的解决方法。 –