我有一个 Android 应用程序,它使用 Xamarin 转换为 iOS 应用程序。我想使用一个 appium 脚本来自动化这两个
I have an Android app which is converted to iOS app using Xamarin. I want to use a single appium script to automate both
可能吗?这两个应用程序都有不同的元素细节。开发团队可以解决这个问题吗?
可以通过使用页面对象模型和 PageFactory
实用程序 class。在将屏幕描述为页面对象时,您可以为每个平台指定不同的定位器。例如:
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 处理。
希望对您有所帮助
可能吗?这两个应用程序都有不同的元素细节。开发团队可以解决这个问题吗?
可以通过使用页面对象模型和 PageFactory
实用程序 class。在将屏幕描述为页面对象时,您可以为每个平台指定不同的定位器。例如:
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 处理。
希望对您有所帮助