将变量传递给Selenium Java中使用注释定义的webelement
我使用注释在SeleniumJava中声明webelement。 在大多数情况下,我有简单的定位器:
@FindBy(how = How.ID, using="login")
WebElement btnLogin;
public void clickLogin() {
btnLogin.click()
}
但有时我需要将变量传递到xpath或任何其他定位器中。 在这种情况下,我不在前面声明webelement,而是在函数中声明:
public void clickElement(String elementName) {
driver.findElementByXpath("//安卓.widget.TextView[@text='" + elementName + "']")
}
我不喜欢它,因为定位器应该在一个地方调用,而不是与代码可见性的函数混合使用
我想做这样的事情:
String elementXpathPrePart= "//安卓.widget.TextView[@text='";
String elementXpathPostPart = "']";
然后
public void clickElement(String elementName) {
driver.findElementByXpath(elementXpathPrePart + elementName + elementXpathPostPart )
}
您有什么解决方案吗强>
# 1 楼答案
这是使用页面工厂时页面对象模型中的一个常见问题。解决方案:
使用常量、java文件并保留所有XPath,从那里开始引用
公共类常量{ 公共静态最终字符串myxpath=“//输入[@id='username'] } 在页面类中:
@FindBy(how=how.ID,using=Constants.myxpath) 网络元素btnLogin
或
编码