我目前正在使用 appium、Robotframework 和 Python 运行 Android 测试自动化。 场景:实施了一项新功能 - App Pin。该页面将在应用程序打开后 X 秒后显示。现在我需要使这个新功能适应我所有现有的测试用例。
我能想到的一种方法是,为应用程序 pin 创建一个自定义 Robotframework 关键字,并在必要时使用它。我不喜欢这种方法的一件事是,我将根据应用程序 pin 页面显示的时间对关键字进行硬编码。
我想知道是否有其他方法,如果appium本身检测到该页面,则调用关键字?
请告诉我。谢谢!
定义页面对象:为应用程序的每个页面创建一个 Java 类。每个类都应包含与该页面上的元素交互的定位器和方法。
公共类登录页面{ 私有 AppiumDriver 驱动程序;
// Locators
private By usernameField = By.id("username");
private By passwordField = By.id("password");
private By loginButton = By.id("login_button");
public LoginPage(AppiumDriver<MobileElement> driver) {
this.driver = driver;
}
public void enterUsername(String username) {
driver.findElement(usernameField).sendKeys(username);
}
public void enterPassword(String password) {
driver.findElement(passwordField).sendKeys(password);
}
public void clickLoginButton() {
driver.findElement(loginButton).click();
}
}
创建测试方法:使用 TestNG 或 JUnit 编写测试方法。使用页面对象与每个页面上的元素进行交互。
公共类 TestClass 扩展 BaseTest {
@Test
public void testLoginPage() {
LoginPage loginPage = new LoginPage(driver);
loginPage.enterUsername("username");
loginPage.enterPassword("password");
loginPage.clickLoginButton();
}
}
使用页面转换:在测试方法中,您可以等待特定于目标页面的元素。找到这些元素后,您可以执行特定于该页面的操作。
公共类 BaseTest { 受保护的 AppiumDriver 驱动程序;
@BeforeClass
public void setUp() throws MalformedURLException {
DesiredCapabilities caps = new DesiredCapabilities();
// Set up desired capabilities
// Initialize driver
driver = new AppiumDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), caps);
}
@AfterClass
public void tearDown() {
driver.quit();
}
}
运行测试:使用 TestNG 或 JUnit 执行您的测试用例,Appium 将根据您定义的操作与应用程序交互。
#自动化#Appium