用数据驱动的框架在Appium中实现Android应用的自动化的方法

113 阅读4分钟

阅读时间: 4 分钟

朋友们好。

欢迎来到我们的appium博客系列。

在上一篇博客中,我们了解了期望的能力,这对appium测试安卓或iOS有很大帮助,了解更多与appium有关的问题,也为了更好地理解期望的能力,这对移动测试至关重要,所以请从这里查看我们以前的博客,但这次我们专注于appium中与安卓有关的高级东西,因为我们知道为了测试iOS,我们需要一个真正的iOS设备,所以我们现在选择安卓机器,但在未来,我们也尝试使用iOS设备。

最初,在这个简短的博客中,我们学习了 "我们如何用DDT自动化安卓应用",正如我们之前讨论的,Appium是一个用于移动测试的自动化测试工具,它有助于在Selenium网络驱动器的帮助下实现自动化测试。它还需要在手机和Appium服务器之间建立连接,帮助建立适当的连接的东西被称为 "欲望****能力",你也可以得到一些高级知识,Appium如何与DDT一起工作,所以首先讨论什么是DDT框架。

数据驱动框架(DDT)

基本上,数据驱动测试是一种软件测试方法,其中测试数据以表格或电子表格格式存储。它允许测试人员输入一个单一的测试脚本,该脚本可以对表格中的所有测试数据执行测试,并期望在同一表格中获得测试输出。因此,设置一个数据源并添加一个excel(.xlsx)文件的输入,然后像这样调用主函数。

ReadData excel = new ReadData("TestDataFile/datadriven.xlsx");

用Appium和IntelliJ设置环境

正如我们之前在我的上一篇博客中所讨论的,我们需要为测试进行适当的设置,你可以在这里获得更多的参考资料

为了进行适当的环境设置,请遵循以下步骤

  1. 安装Appium服务器(GUI或命令行)。
  2. 安装nodeJs。
  3. 设置android home和java home路径
  4. 安装android studio。
  5. 从android studio下载android版本和android仿真器。
  6. 安装IDE(IntelliJ)。
  7. 在模拟器或真实设备中下载并安装apk info.apk。
  8. 下载UI automator viewer。

设置你的项目

启动IntelliJ,选择 "文件">"新建">"Maven项目",按照默认设置完成对话框。接下来,让我们添加appium和selenium的依赖。双击pom.xml文件,编辑...块,看起来像这样。

<dependencies>
  <dependency>
    <groupId>io.appium</groupId>
    <artifactId>java-client</artifactId>
    <version>5.0.4</version>
  </dependency>
  <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.9.1</version>
  </dependency>

编写一个基本设置脚本

在IntelliJ文件资源管理器中,扩展 "src/main/java "并扩展该包。

public class demo1 {
    public static void main(String[] args) throws MalformedURLException {
        DesiredCapabilities  desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities.setCapability("platformName", "Android");
        desiredCapabilities.setCapability("appium:platformVersion", "11.0");
        desiredCapabilities.setCapability("appium:deviceName","4.7_WXGA_API_30");
        desiredCapabilities.setCapability("appium:automationName", "appium");
        desiredCapabilities.setCapability("appium:noRest", true);
        desiredCapabilities.setCapability("appium:udid", "emulator-5554");

与特定安卓应用相关的主要期望能力

正如我们上面所讨论的,我们自动化了一个安卓应用,所以每个应用都有不同的appActivity和appPackage,我们在 "app信息 "的帮助下知道这两者,所以在我们的模拟器上首先安装了安卓应用。

         cap.setCapability("appPackage","com.android.dialer");
        cap.setCapability("appActivity","com.android.dialer.main.impl.MainActivity - Phone");

如何捕获主要的期望能力

在添加了这个欲望能力后,appium就可以在模拟器或真实设备中进行午餐,但在此之前,我们需要添加appium的本地主机端口,并在代码中添加appium-selenium Android驱动。

         //localhost where appium server run
        URL url= new URL("http://127.0.0.1:4723/wd/hub");
        AndroidDriver<WebElement> driver=new AndroidDriver<WebElement>(url,cap);
        //after lunching the application it wait so we add below function.
                 Thread.sleep(5000);

如何访问按钮以及如何捕获它

一半的步骤已经完成,现在需要用可访问性ID来定位模拟器或真实的Android设备中的元素。

我选择了一个电话拨号器作为我们测试的安卓应用。所以我们需要访问并捕获我们应用中的按钮,所以让我们在.xlsx文件中添加特定按钮的资源ID或有时可访问性ID作为外部数据源。为了获得特定按钮的资源ID或其他不同的ID,我们在Gif文件中的帮助下遵循某些步骤。

  • Appium检查器
  • UI Automator查看器

          MobileElement el8 = (MobileElement) driver.findElementByAccessibilityId(excel.getData(0,0,1));
        el8.click();
        MobileElement el9 = (MobileElement) driver.findElementByAccessibilityId(excel.getData(0,1,0));
        el9.click();
        MobileElement el10 = (MobileElement) driver.findElementByAccessibilityId(excel.getData(0,1,1));
        el10.click();
        MobileElement el11 = (MobileElement) driver.findElementByAccessibilityId(excel.getData(0,2,0));
        el11.click();
        MobileElement el12 = (MobileElement) driver.findElementByAccessibilityId(excel.getData(0,2,1));
        el12.click();
         System.out.println("Application started........");

前提条件

在运行上述程序之前,我们需要以下东西处于运行状态。

  • Appium服务器
  • 仿真器或真实的Andriod设备

这篇博客就写到这里,我希望能了解到appium以及我们如何实现安卓设备的自动化,在下一篇博客中,我们将了解更多关于appium的信息,敬请关注。

谢谢你