2

有什么方法可以参数化我们传递的字符串以使用页面工厂创建页面对象?

前任:

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

我正在尝试将字符串 v 推送到 @FindBy 中,但出现错误。

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

4

2 回答 2

1

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

在您的Page, 而不是 using 中@FindBy,获取 the 的WebElementFacadeusingfind方法,Page然后将其用于操作。

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

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

这对我来说非常有效。元素 id 一直来自.story示例。

于 2016-10-29T09:32:53.377 回答
0

不,不幸的是,无法将参数发送到注释(参考)。由于 Java 注释不允许动态参数化。编译器在编译时评估注释元数据。所以,它必须存在。虽然有解决这个问题的方法。检查这个- 以动态方式提供的 Java 注释值

于 2019-09-18T11:22:22.330 回答