• appium入门


    Appium背景介绍

    Appium是由nodejs的express框架写的Http Server,Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。

    Appium桌面客户端安装方式

    1. 运行appium - desktop - Setup - 1.2 .7.exe,默认安装即可

    2. 启动客户端,按图片步骤  设置

    Appium-python库安装

    pip install Appium-Python-Client==1.3.0
    1. #导入driver对象
    2. from appium import webdriver
    3. from appium.webdriver.common.touch_action import TouchAction
    4. #导入参数
    5. caps = {}
    6. caps["deviceName"] = "emulator-5554"
    7. caps["platformName"] = "Android"
    8. caps["appPackage"] = "com.android.settings"
    9. caps["appActivity"] = "com.android.settings.Settings"
    10. driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
    11. #脚本内启动其他app
    12. driver.start_activity(appPackage,appActivity)
    13. #关闭app
    14. driver.close_app() # 关闭当前操作的app,不会关闭驱动对象
    15. #关闭驱动对象
    16. driver.quit()
    17. #安装APK到手机
    18. driver.install_app(app_path)
    19. #手机中移除APP
    20. driver.remove_app(app_id)
    21. #判断APP是否已安装
    22. driver.is_app_installed(bundle_id)
    23. #获取当前屏幕内元素结构
    24. driver.page_source
    25. #通过id定位
    26. driver.find_element_by_id('com.android.settings:id/search')
    27. #通过class定位
    28. driver.find_elements_by_class_name('android.widget.LinearLayout')
    29. #通过xpath定位
    30. driver.find_element_by_xpath('//*[contains(@resource-id,"com.android.settings:id/search")]')
    31. driver.find_element_by_xpath('//*[contains(@class,"android.widget.TextView")]')
    32. driver.find_element_by_xpath('//*[contains(@text,"WLAN")]').click
    33. #定位一组元素,注意element -> elements通过id方式定位一组元素
    34. driver.find_elements_by_id('com.android.settings:id/search')
    35. #通过class方式定位一组元素
    36. driver.find_elements_by_class_name('android.widget.TextView')
    37. #通过xpath方式定位一组元素
    38. driver.find_elements_by_xpath('//*[contains(@package,"com.android.settings")]')
    39. #发送数据到输入框
    40. driver.find_element_by_accessibility_id('搜索设置').click()
    41. driver.find_element_by_id('android:id/search_src_text').send_keys(123)
    42. #获取元素的文本内容
    43. texts=driver.find_elements_by_class_name('android.widget.LinearLayout')
    44. for i in texts:
    45. print(i.text)
    46. #获取元素在屏幕上的坐标
    47. a=driver.find_element_by_id('com.android.settings:id/search')
    48. b=a.driver.location
    49. #获取app包名和启动名
    50. a1=driver.current_package
    51. a2=driver.current_activity
    52. #swip滑动事件
    53. driver.swipe(start_x=190,start_y=660,end_x=150,end_y=240)
    54. driver.swipe(start_x=190,start_y=660,end_x=150,end_y=240,duration=5000)
    55. scroll滑动事件
    56. a1=driver.find_element_by_xpath('//*[contians(@text,"安全")]')
    57. a2=driver.find_element_by_xpath('//*[contians(@text,"WLAN")]')
    58. driver.scroll(a1,a2)
    59. #drag拖拽事件
    60. a1=driver.find_element_by_xpath('//*[contians(@text,"安全")]')
    61. a2=driver.find_element_by_xpath('//*[contians(@text,"WLAN")]')
    62. driver.drag_and_drop(a1,a2)
    63. #应用置于后台事件
    64. driver.background_app()
    65. #手指轻敲操作
    66. a=driver.find_element_by_xpath('//*[contians(@text,"WLAN")]')
    67. TouchAction(driver).tap(a).perform()
    68. # 手指按操作
    69. a=driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
    70. TouchAction(driver).press(a).release().perform()
    71. TouchAction(driver).press(x=160,y=260).release().perform()
    72. # 手指长按操作
    73. driver.find_element_by_xpath("//*[contains(@text,'WLAN')]").click()
    74. a=driver.find_element_by_class_name('android.widget.RelativeLayout')
    75. TouchAction(driver).press(a).wait(3000).perform()
    76. TouchAction(driver).press(x=550,y=520).wait(4000).release().perform()
    77. # 手指移动操作
    78. a1=driver.find_element_by_xpath('//*[contains(@text,"WALN")]')
    79. a2=driver.find_element_by_xpath('//*[contains(@text,"安全")]')
    80. TouchAction(driver).press(a2).move_to(a1).release().perform()
    81. #应用设置手机密码
    82. a1=driver.find_element_by_xpath('//*[contains(@text,"WALN")]')
    83. a2=driver.find_element_by_xpath('//*[contains(@text,"安全")]')
    84. driver.drag_and_drop(a2,a1)
    85. a3=driver.find_element_by_xpath('//*[comtains(@text,"安全")]').click()
    86. driver.find_element_by_xpath('//*[contains(@text,"屏幕锁定")]')
    87. driver.find_element_by_xpath("//*[contains(@text,'图案')]").click()
    88. TouchAction(driver).press(x=245,y=965).wait(100).move_to(x=240,y=1200).wait(100).move_to(x=240,y=1500).wait(100).move_to(x=540,y=1500).release().perform()

     

     

  • 相关阅读:
    html打印pdf相关的问题
    架构扩展性
    FPGA之旅设计99例之第二十一例----VGA串口SDRAM显示图片
    WEB服务的配置与使用 Apache HTTPD
    pandas plot函数:数据可视化的快捷通道
    基于变压器的手持式超声图像中乳腺病变的分类不一致性测量表征
    Hash表实现原理
    ceph 原理
    Linux 各文件夹说明 linux文件夹说明
    交叉编译tcpdump
  • 原文地址:https://blog.csdn.net/qq_72697024/article/details/126712766