我只能在页面对象 @FindBy 注释中使用硬编码值
但我想动态解析定位器。
public class LoginPage extends BasePage {
// hardocded value works ok
@FindBy(name = "login field")
WebElement usernameFld;
// does not compile
// this is a kind of what I would like to have
@FindBy( getLocatorFromExternalSource() )
WebElement passwordFld;
}
我看到一些帖子提到可以通过实现自定义注释/装饰器/工厂来解决此类问题,但尚未找到示例。
QUESTION:
有人可以给一个example如何实现自定义 ElementLocatorFactory 以便动态解析定位器?
我知道我可以使用简单的老式调用,例如:
driver.findElement( getLocatorFromExternalSource("passwordFld") ).click()
但我想用
passwordFld.click()
instead.
注释是元数据,因此它们需要在类加载期间在运行时启动时可用。你所寻求的没有直接的答案,但是使用反射有黑客,恕我直言,我会避免它,如果你需要外部化定位器,那么我建议你实现对象存储库,你可以在运行时动态读取定位器一些外部来源。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)