在@FindBy页面工厂中传递参数

时间:2016-08-16 08:54:35

标签: selenium selenium-webdriver cucumber jbehave serenity-bdd

有没有办法让我们可以参数化我们使用页面工厂创建页面对象的字符串

前:

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

我正在尝试将字符串v推入@FindBy,但我收到错误。

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

2 个答案:

答案 0 :(得分:0)

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

Page中,而不是使用@FindBy,使用WebElementFacade的{​​{1}}方法获取find,然后将其用于操作。

例如:如果您需要Page元素,请参阅以下代码:

click

这对我来说很有效。元素id从public void click(String elementId) { WebElementFacade element = find(ById.id(elementId)); element.click(); } 例子开始一直到来。

答案 1 :(得分:0)

否,很遗憾,无法将参数发送到注释(引用)。由于Java批注不允许动态参数化。编译器在编译时评估注释元数据。因此,它必须存在。尽管有解决方法。 选中此项-Java Annotations values provided in dynamic manner