当前位置: 首页 > 知识库问答 >
问题:

在@FindBy Page工厂中传递参数

松阳泽
2023-03-14

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

前任:

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

我试图将字符串v推入@FindBy,但我得到了一个错误。

我正在获取注释属性FindBy的值。名称必须是常量表达式。

共有2个答案

穆宾白
2023-03-14

不,不幸的是,无法将参数发送到注释(引用)。因为Java注释不允许动态参数化。编译器在编译时评估注释元数据。因此,它必须存在。尽管这方面还有很多工作要做。检查此项-以动态方式提供Java注释值

邵子平
2023-03-14

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

在您的页面中,不要使用FindBy,而是使用页面的find方法获取WebElementFacade,然后将其用于操作。

例如:如果需要在元素上单击,请参见下面的代码:

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

这对我来说非常合适。元素id来自. stories示例。

 类似资料:
  • 问题内容: 方法context.getBean(name,user)的文档说 允许指定显式构造函数参数/工厂方法参数 但是无论我做什么(尝试一切),使用最合理的设置在初始化期间加载Bean时都会得到以下信息: 注释说可以做到的,但是如果您在该bean的xml定义中指定构造函数参数,则失败。 问题答案: 在javadoc中说: args-在使用静态工厂方法的显式参数创建原型时使用的参数。 因此,be

  • 我需要在Spark SQL中传递参数。例如,下面的查询是Val timestamp=spark。sql(“从表中选择时间戳”)现在,我有另一个查询要在where类Spark中传递这个时间戳。sql(s“从表B中选择col1,其中timestamp='$timestamp'”。 但是上面的查询返回不匹配的表达式错误。有人能提出解决方案吗

  • 问题内容: 请告知如何将参数传递给使用的函数。 我的例子是不正确的。 问题答案: 您需要创建一个匿名函数,以便不会立即执行实际函数。

  • 但是,当我试图将此代码更改为以下代码时,我得到了一个错误-错误:Main method,在类MyClass中找不到,请将Main method,定义为:public static void Main(string[]args)。我需要接收owner和consumerName作为我的程序的参数/输入。 ,这是怎么做到的?

  • 您可以将其他数据作为常规方法参数传递到后台任务。我再次使用下面的例子(希望没有让你厌恶): BackgroundJob.Enqueue(() => Console.WriteLine("Hello, {0}!", "world")); 在常规方法调用中,在执行后台作业期间, Console.WriteLine 方法将使用这些参数。为了参数传递进去,需要先序列化。 使用 了不起的 Newtonsof

  • 问题内容: 我已经按照此链接中所述的教程进行操作。在下面的代码中,由于某种原因,数据不会作为参数附加到url上,但是如果我使用它直接将其设置为url 则可以。 问题答案: 对于简单的情况,我建议您使用jQuery 的或语法: 如果您需要捕获失败案例,请执行以下操作: 此外,如果您始终发送JSON字符串,则可以在最后使用$ .getJSON 或$ .post以及另一个参数。