• Appium自动化测试基础 — APPium基础操作API(二)


    5、发送文件到手机和获取手机中的文件

    (1)发送⽂件到⼿机
    代码片段:

    1. # 导入base64库
    2. import base64
    3. # 将文件转换成二进制文件
    4. with open(file_path,'rb') as fp:
    5. data = str(base64.b64encode(fp.read()),'utf-8')
    6. # print(data)
    7. # 将转换格式的文件发送到手机
    8. driver.push_file(path, data)

    参数说明:
    file_path:需要上传的文件路径。
    path:⼿机设备上的路径(例如:/sdcard/a.txt)
    data:⽂件内数据,要求base64编码。
    说明:
    Python3.x中字符都为unicode编码,需要先导入base64库进行编码和解码,先把文件转成base64格式的二进制文件,然后进行文件传递到手机,因为设备之间传递是二进制的。

    (2)从⼿机中拉取⽂件
    代码片段:

    1. import base64
    2. # 返回数据为base64编码的数据
    3. data = driver.pull_file(path)
    4. # base64解码
    5. with open('a.txt','wb') as fp:
    6. fp.write(base64.b64decode(data))

    参数:
    path:⼿机设备上的路径例如: /sdcard/a.txt
    (3)示例:

    1. # 1.导入appium
    2. import time
    3. from appium import webdriver
    4. import base64
    5. # 2.创建Desired capabilities对象,添加启动参数
    6. desired_caps = {
    7. "platformName": "Android", # 系统名称
    8. "platformVersion": "7.1.2", # 系统版本
    9. "deviceName": "127.0.0.1:21503", # 设备名称
    10. "appPackage": "com.cyanogenmod.filemanager", # APP包名
    11. "appActivity": ".activities.NavigationActivity" # APP启动名
    12. }
    13. # 3.启动APP
    14. # 声明手机驱动对象(实例化webdriver)
    15. # 第一个参数为appium服务的地址,需要启动appium服务。
    16. # 第二个参数为Desired capabilities对象
    17. # 我们就先传入这两个参数就可以了。
    18. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
    19. # 4.操作APP
    20. # 4.1 发送文件到手机
    21. file_path = r'C:\Users\L\Desktop\test.txt'
    22. # 将文件转换成二进制文件
    23. with open(file_path, 'rb') as fp:
    24. data = str(base64.b64encode(fp.read()), 'utf-8')
    25. # print(data)
    26. # 将转换格式的文件发送到手机
    27. path = r'/sdcard/test.txt'
    28. driver.push_file(path, data)
    29. # 4.2 从手机中拉取文件到电脑上
    30. # 手机中文件的路径
    31. path_app = '/sdcard/test.txt'
    32. # 返回数据为base64编码的数据
    33. data = driver.pull_file(path_app)
    34. print(data)
    35. # base64解码
    36. with open('test.txt', 'wb') as fp:
    37. fp.write(base64.b64decode(data))
    38. # 提示:该文件会拉取到脚本文件所在的目录中
    39. # 5.关闭APP
    40. time.sleep(5)
    41. driver.quit()

    6、获取当前屏幕内元素结构(重点)

    (也就是获取当前屏幕的源码)
    使用的API:

    1. driver.page_source
    2. 作⽤:
    3. 返回当前页⾯的⽂档结构,可以为后续判断特定的元素是否存在提供前提。

    示例:

    1. # 1.导入appium
    2. import time
    3. from appium import webdriver
    4. # 2.创建Desired capabilities对象,添加启动参数
    5. desired_caps = {
    6. "platformName": "Android", # 系统名称
    7. "platformVersion": "7.1.2", # 系统版本
    8. "deviceName": "127.0.0.1:21503", # 设备名称
    9. "appPackage": "com.android.settings", # APP包名
    10. "appActivity": ".Settings" # APP启动名
    11. }
    12. # 3.启动APP
    13. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
    14. # 4.操作APP
    15. # 获取当前页面源码
    16. # 只是设置首页中的页面源码
    17. source = driver.page_source
    18. # # print(source)
    19. # 将app的页面源码保存到一个文件中
    20. with open("source.txt", "w", encoding="UTF-8") as fp:
    21. fp.write(source)
    22. # 5.关闭APP
    23. time.sleep(3)
    24. driver.quit()

    7、脚本内启动其他app

    使用的API:

    1. driver.start_activity(appPackage,appActivity)
    2. 提示:appPackage,appActivity为所要启动app的包名和启动名

    示例:

    1. # 从管理app页面中打开文件管理器app
    2. # 1.导入appium
    3. import time
    4. from appium import webdriver
    5. # 2.创建Desired capabilities对象,添加启动参数
    6. desired_caps = {
    7. "platformName": "Android", # 系统名称
    8. "platformVersion": "7.1.2", # 系统版本
    9. "deviceName": "127.0.0.1:21503", # 设备名称
    10. "appPackage": "com.android.settings", # APP包名
    11. "appActivity": ".Settings" # APP启动名
    12. }
    13. # 3.启动APP
    14. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
    15. # 4.操作APP
    16. # 从设置app页面启动文件管理器APP
    17. time.sleep(3)
    18. # 先用adb命令获取文件管理器的包名和启动名
    19. # com.cyanogenmod.filemanager/.activities.NavigationActivity
    20. driver.start_activity("com.cyanogenmod.filemanager", ".activities.NavigationActivity")
    21. # 5.关闭APP
    22. time.sleep(3)
    23. driver.quit()

    8、将应用程序置于后台运行(重点)

    使用的API:

    1. # 将应用置于后台运行(秒)
    2. driver.background_app()

    示例:

    1. # 1.导入appium
    2. import time
    3. from appium import webdriver
    4. # 2.创建Desired capabilities对象,添加启动参数
    5. desired_caps = {
    6. "platformName": "Android", # 系统名称
    7. "platformVersion": "7.1.2", # 系统版本
    8. "deviceName": "127.0.0.1:21503", # 设备名称
    9. "appPackage": "com.android.settings", # APP包名
    10. "appActivity": ".Settings" # APP启动名
    11. }
    12. # 3.启动APP
    13. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
    14. # 4.操作APP
    15. time.sleep(3)
    16. # 将设置app置于后台运行
    17. # 将应用在后台运行5秒,返回前台
    18. driver.background_app(5)
    19. # 提示:测试前最好把设备中所有后台运行的app都关闭掉。
    20. # 5.关闭APP
    21. time.sleep(3)
    22. driver.quit()

    提示:在测试app热启动的时候,就会常用到该命令。

    重点:配套学习资料和视频教学

    那么在这里我也精心准备了上述大纲的详细资料在下方链接如下

  • 相关阅读:
    Transformer 中 Self-attention 的计算复杂度
    apple configurator 2 获取appstore ipa包
    2021年研究生数模B题论文记录
    Java语言程序设计实践考试
    Centos使用war文件部署jenkins
    “因为无法从捐赠中抽成,谷歌把我的开源 App 下架了!”
    每日一结(11.7)
    设置 height: auto 却无法触发 transition 动画的解决方案
    osg 操作 NodePathList 节点操作
    【Linux进程间通信】二、pipe管道
  • 原文地址:https://blog.csdn.net/m0_59868866/article/details/125618869