我正在使用页面对象模型。所以每个页面文件都包含变量(元素)。我通过传递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();
},
答案 0 :(得分:0)
正如我在此注释行中看到的,您正在尝试单击静态字段。 MobileElement mobileElement = pageName.mobileElementTitle;
因此,您需要在页面类中使用静态移动元素(changeName ... class)。
OR
添加getters函数以返回元素所在的同一个类中的页面元素。
我建议使用工厂数据结构来制作元素工厂类。
@ FindBy / @AndroidFindBy调用页面工厂,为了使用页面对象模型,您需要在页面类中为元素和函数添加实名。
例如: class Login应包含至少3个名为的元素:usernameElement,passwordElement和loginButton。 这些函数必须描述实际操作: public void clickLoginButton()。