这可能吗?两个应用程序的元素细节不同。开发团队可以解决这个问题吗?
可以,通过使用页面对象模型和 PageFactory
实用类。在将您的屏幕描述为页面对象时,您可以为每个平台指定不同的定位器。比如说
public class LoginView extends BaseView {
@AndroidFindBy(id = "email")
@iOSXCUITFindBy(accessibility = "email")
private MobileElement emailInput;
@AndroidFindBy(id = "password")
@iOSXCUITFindBy(accessibility = "password")
private MobileElement passwordInput;
@AndroidFindBy(id = "submit")
@iOSXCUITFindBy(accessibility = "submit")
private MobileElement submitButton;
public LoginView(AppiumDriver driver) {
super(driver);
}
public void login(String username, String password) {
emailInput.click();
emailInput.type(username);
passwordInput.click();
passwordInput.type(password);
submitButton.click();
}
}
在BaseView中,你需要传递驱动实例并初始化元素,比如这样。
abstract class BaseView {
protected AppiumDriver driver;
public BaseView(AppiumDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
}
现在,你只需要为你的元素在不同平台上抓取定位器,其余的将由PageFactory处理。
希望对你有帮助