使用appium进行通用移动测试

时间:2014-11-11 14:59:51

标签: android ios mobile appium

我是移动测试的新手,目前我正在研究移动测试的自动化框架。 我已经开始研究Appium,并为我已经制作的演示应用程序创建了一些测试(一个用于IOS,另一个用于Android)。 我已经设法为每个平台编写了一个测试,但我想知道,编写一个通用测试会有多困难,这个测试将在两个平台上以最小的调整执行?

谢谢

2 个答案:

答案 0 :(得分:3)

这是可能的,但您必须为所有平台的每个组件保留相同的标签,例如单击按钮,而不是通过名称定位Xpath。

WebElement button = driver.findElement(By.name(" my button")); button.click();

更多信息在Appium文档中查找元素: http://appium.wikia.com/wiki/Finding_Elements

答案 1 :(得分:1)

我从头开始构建了一个完全相同的自动化框架,即拥有一个代码库,并且测试在Android和iOS上运行,具体取决于您为测试提供的设备和应用程序。这就是我去做的方式。 (我使用了Java + Appium + Cucumber框架)。

  • 遵循Page Object模式是编写自动化代码的好习惯。

话虽如此,您将在名为“ObjectRepository”的文件夹下的2个单独文件中获得iOS和Android的Accessibility ID的所有资源ID。这些文件的扩展名通常为bool loadData(const std::string& filePath){ std::ifstream file; file.open(filePath); if (!file.is_open()) return false; date_and_time dtNow; int numberOfmyClass; file.read((char*)&dtNow, sizeof(date_and_time)); file.read((char*)&numberOfmyClass, sizeof(int)); for (size_t i = 0; i < numberOfmyClass; i++) { MyClass myClass; myClass.read(file); //use data } return true; } 称为属性文件)。

假设您有一个要在Android和iOS上与之交互的登录按钮,您将有2个文件:

文件1)“androidObject.properties”,其中包含:

*.properties

文件2)“iOSObject.properties”,其中包含:

Login.LoginButton=loginAndroidBtn

  

注意:在上面的键/值对中,键是相同的“Login.LoginButton”,值是Android和iOS中的登录按钮的资源ID和辅助功能ID应用

在您的代码中,您将执行以下操作:

Login.LoginButton=loginiOSBtn

在另一个文件中,您可以设置if(IS_ANDROID) { DRIVER.findElementById("Login.LoginButton").click(); } else { DRIVER.findElementByAccessibilityId("Login.LoginButton").click(); } IS_ANDROID的含义。你可以这样做:

IS_IOS

这样您就可以拥有一个代码库并无缝地运行Android和iOS。

-Raj

Testim.io