• 你可以在执行的时候增加录屏,还可以在元素定位失败的时候增加截图,这样好排查问题。
    appium 里面的 start_recording_screen 和 stop_recording_screen ;每次执行用例前录屏,用例结束后结束录屏,再将录屏文件插入到 allure 里面

    @pytest.fixture
    def driver(cmdopt, devices):
    global base_driver
    global env
    # 执行 runner 脚本,多条用例执行时,无需每条用例都初始化 driver,如果 driver 存在则直接使用,并且初始化录屏
    if base_driver and not devices:
    base_driver.start_recording_screen()
    yield base_driver
    time.sleep(1)
    record_base64 = base_driver.stop_recording_screen()
    save_record_file(record_base64, base_driver)

    def save_record_file(base64_data, driver):
    # 将 mp4 录屏文件存储在 static 目录,已当前时间命名
    file_path, file, zip_file, file_name, output_name = get_mp4_file_info(driver)
    # base64 转视频文件
    logger.info("======保存录屏文件=======")
    base64_to_mp4(base64_data, file)
    # 压缩视频文件
    ZipPictureOrVideo(file_path, file_name, output_name).compress_video()
    # 视频文件添加至测试报告
    logger.info("======添加视频至 allure 报告=======")
    with open(zip_file, mode='rb') as f:
    file = f.read()
    allure.attach(file, "录屏文件", allure.attachment_type.MP4)

  • xpath 是自动解析的吗?我一般 xpath 都使用相对定位,自动解析 xpath 的时候也是用相对定位的方式,想保证稳定性,一些元素还是需要手动定位,通过一些不变的元素,找到相对的 xpath,才能提高稳定性。

  • 简单的说就是,获取到 appium 的页面树,之后通过你手动定位元素过程中的总结的规律,写成通用的函数,去自动解析元素树,最后生成元素代码。跟 app 有强相关不通用。有一些局限性,主要能解决一些简单元素的封装,能节省点时间,完全自动有些苦难

  • 再用例里面做断言

    封装的断言函数里面增加 is_restart 字段,默认重启

    重启使用 appium 自带的函数重启 app

    重启之后,需要对 app 状态做一些判断,比如是否处于登录页面,一些权限弹窗,等

  • 是的

  • appium 自带功能

  • allure 插件

  • 官方哪里有说吗?可以帮忙找一下,介绍这块的地方吗?

  • 是的,主要最开始直接在 beanshell 中实现了加密功能,最后没想到,因为 beanshell 中加密时长,随着并发的加大,逐渐增加,导致增大并发数,接口的 tps 也无法增加,影响了业务性能测试,后来改成 jar 包方式,发现性能提升许多,而且 beanshell 执行时间稳定,只是好奇中间有什么区别。

  • 没打包之前打印的是 sign 内部的耗时,打包之后打印的是 sign 整个方法的耗时,没有在 sign 的 jar 包里面加日志