我有一个Android应用,使用Xamarin转换为iOS应用。我想用一个单一的appium脚本来自动完成这两个应用。

问题描述 投票:0回答:1

这可能吗?两个应用程序的元素细节不同。开发团队可以解决这个问题吗?

xamarin xamarin.forms appium appium-android appium-ios
1个回答
0
投票

可以,通过使用页面对象模型和 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处理。

希望对你有帮助

© www.soinside.com 2019 - 2024. All rights reserved.