【问题标题】:Is this possible to pass locators from properties file to @FindBy annotation in POM?这是否可以将定位器从属性文件传递到 POM 中的 @FindBy 注释?
【发布时间】:2017-07-26 08:25:43
【问题描述】:

我已将所有 xpaths定位器 存储在属性文件中。我正在尝试在Page Object Repository 中使用它们并通过@FindBy 注释查找元素。我想在这里使用所有存储的定位器。

@FindBy 中使用属性文件值时,我收到编译错误消息the value for annotation must be a constant expression

有人可以帮我理解吗?如果可能,请建议我一些解决方法。

【问题讨论】:

  • 您可以将定位器存储在 java 类中,每个定位器都带有静态最终字符串变量。然后你就可以在 FindBy 中使用静态引用了。

标签: java selenium selenium-webdriver pom.xml


【解决方案1】:

@FindBy 注释的值必须在编译时间中计算,即在程序开始运行之前该值是已知的。属性文件中的值在运行时中进行评估,因此它们不能在page factory 中使用。

你的选择是

  • 将定位器作为固定字符串放入@FindBy 代码中,而不是从属性文件中读取。
  • 在创建页面对象实例时不要使用page factory 并初始化元素。
  • 不要使用page factory,只有在使用时才初始化元素。

【讨论】:

  • 感谢@Guy@grasshopper
猜你喜欢
  • 2021-12-30
  • 2015-11-14
  • 1970-01-01
  • 2018-06-26
  • 2022-06-20
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多