2016-08-16 232 views
0

有没有什么办法让我们可以参数化,我们通过使用页面工厂创建一个页面对象的字符串传递参数

例如:

String v = "password"; 
@FindBy(name=v) 
private WebElementFacade password_Field; 

我试图推字符串v到@FindBy但我得到错误。

我得到 的注释属性的值FindBy.name必须是一个常量表达式

+1

在你的问题中添加异常堆栈跟踪。如果您使用final关键字声明变量v,则应该使用 – Grasshopper

+0

。 – Grasshopper

+0

我同意它,如果我们使用final关键字。但我想v的值应该是可以改变的。有没有办法呢。 –

回答

0

是。有可能的。请看以下解决方案:

在你Page,而不是使用@FindBy,得到Page的使用WebElementFacadefind方法,然后用它来操作。

例如:如果你需要click一个元素上,请参阅下面的代码:

public void click(String elementId) { 
    WebElementFacade element = find(ById.id(elementId)); 
    element.click(); 
} 

这完全适用于我。元素ID从.story例子一路来。