如何通过在函数中传递pageName和variableName来获取变量值

时间:2018-05-08 11:47:31

标签: java selenium

我正在使用页面对象模型。所以每个页面文件都包含变量(元素)。我通过传递pageName和variableName来调用函数来单击元素。

页:

public class ChangeNamePageAndroid {
        @AndroidFindBy(xpath = "//android.widget.TextView[@text='First name']")
        public MobileElement firstNameLbl;
    }

这里' firstNameLbl'是varibleName(MobileElement)

功能定义:

import com.example.pageobjects.ChangeNamePageAndroid;

public class ChangeNameUtilAndroid{

public ChangeNamePageAndroid changeNamePageAndroid = new ChangeNamePageAndroid();

public void enter123(String pageName, String mobileElementTitle, String text) {
   // **MobileElement mobileElement = pageName.mobileElementTitle;**
      mobileElement.sendKeys(text);
      }
    }

如何从其他页面获取元素?

这里我在调用函数时传递pageName和variableName。

enter123(ChangeNamePageAndroid, firstNameLbl);

注意:我在javascript中做了类似的事情

clickButton: function(pageName,varibleName){
    var page = require(pageName+'.js');
    var x = page[varibleName];
    element(by.id(x)).click();
},

1 个答案:

答案 0 :(得分:0)

正如我在此注释行中看到的,您正在尝试单击静态字段。   MobileElement mobileElement = pageName.mobileElementTitle;

因此,您需要在页面类中使用静态移动元素(changeName ... class)。

OR

添加getters函数以返回元素所在的同一个类中的页面元素。

我建议使用工厂数据结构来制作元素工厂类。

@ FindBy / @AndroidFindBy调用页面工厂,为了使用页面对象模型,您需要在页面类中为元素和函数添加实名。

例如: class Login应包含至少3个名为的元素:usernameElement,passwordElement和loginButton。 这些函数必须描述实际操作: public void clickLoginButton()。