• Appium进行APP自动化测试


       之前用过uiautomator2对安卓App进行自动化测试,本次简单介绍Appium进行App自动化测试。

        Appium具体功能不再介绍,可自行百度。

    1、 安装Appium

        首先官网下载对应版本:

        Release v1.22.3-4 · appium/appium-desktop · GitHub

        注意:其他Node.js\JDK\Andoird SDK\Python\Selenium自行安装

    2、 元素识别

        元素识别可用Android自带的uiautomatorview,也可用第三方工具weditor,也可用appium的Inspector。随着Appium Desktop升级到1.22.0版本,服务和元素查看器已经分开了,查看元素信息就需要下载Appium Inspector。下载地址:Releases · appium/appium-inspector · GitHub

    2.1  首先运行Appium,配置相关信息

        

    2.2 启动appium inspector,配置相关信息

         2.3 点击 Start Session打开界面,可实时刷新。

    3、 编写代码实现

    1. import time
    2. import unittest
    3. from appium import webdriver
    4. from appium.webdriver.common.appiumby import AppiumBy as By
    5. class InspectTest(unittest.TestCase):
    6. caps = {}
    7. caps["platformName"] = "Android"
    8. caps["appium:platformVers"] = "12"
    9. caps["appium:deviceName"] = "7d9p45zhytuson6l"
    10. caps["appium:ensureWebviewsHavePages"] = True
    11. caps["appium:nativeWebScreenshot"] = True
    12. caps["appium:newCommandTimeout"] = 3600
    13. caps["appium:connectHardwareKeyboard"] = True
    14. caps["appium:appPackage"] = "com.xxxxx.xxxxx"
    15. caps["appium:appActivity"] = "crc64ad4cc14999bdba0b.MainActivity"
    16. # 当前Python为3.10,其find_element方法有所改变
    17. def start_app(self):
    18. d = webdriver.Remote("http://127.0.0.1:4723/wd/hub", self.caps)
    19. acc = d.find_element(By.XPATH, '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[1]/android.widget.EditText')
    20. acc.send_keys('username')
    21. time.sleep(1)
    22. pw = d.find_element(By.XPATH, '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.widget.EditText')
    23. pw.send_keys('password')
    24. time.sleep(1)
    25. loginBtn = d.find_element(by=By.CLASS_NAME, value='android.widget.Button')
    26. loginBtn.click()
    27. time.sleep(5)
    28. backB = d.find_element(By.CLASS_NAME, 'android.widget.Button')
    29. backB.click()
    30. time.sleep(1)
    31. report = d.find_element(By.ANDROID_UIAUTOMATOR, 'new UiSelector().text("Inspection Reports")')
    32. report.click()
    33. time.sleep(5)
    34. d.quit()
    35. def test01_starts(self):
    36. self.start_app()
    37. if __name__ == '__main__':
    38. unittest.main()

     

  • 相关阅读:
    javaScript基础一
    Charles的Map Remote功能
    关于癌细胞MR的几种类型,T1,T2,DCE,DWI,ADC
    A的闭包+B的闭包包含于A+B的闭包
    神经网络遗传算法函数极值寻优
    服务器监控及其监控工具
    转载-Blazor Debugging Improvements in Rider 2021.2
    openlayers 实例教程分享
    FPGA硬件工程师Verilog面试题(五)
    RestTemplate配置和使用
  • 原文地址:https://blog.csdn.net/zljun8210/article/details/126161512