有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将变量传递给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) 个答案

  1. # 1 楼答案

    这是使用页面工厂时页面对象模型中的一个常见问题。解决方案:

    1. 使用常量、java文件并保留所有XPath,从那里开始引用

      公共类常量{ 公共静态最终字符串myxpath=“//输入[@id='username'] } 在页面类中:

      @FindBy(how=how.ID,using=Constants.myxpath) 网络元素btnLogin

    编码

    public void clickElement(String elementName) {
                 driver.findElementByXpath(By. xpath(Constants.myxpath ).click()
            }