• Appium UI 自动化实践总结 at 2022年07月15日

    你可以在执行的时候增加录屏,还可以在元素定位失败的时候增加截图,这样好排查问题。
    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)

  • Appium UI 自动化实践总结 at 2022年07月14日

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

  • Appium UI 自动化实践总结 at 2022年07月11日

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

  • Appium UI 自动化实践总结 at 2022年07月11日

    再用例里面做断言

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

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

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

  • Appium UI 自动化实践总结 at 2022年03月02日

    是的

  • Appium UI 自动化实践总结 at 2022年03月02日

    appium 自带功能

  • Appium UI 自动化实践总结 at 2022年03月02日

    allure 插件

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

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

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

  • Appium UI 自动化实践总结 at 2021年10月09日

    我加你吧,你发一下微信号

  • Appium UI 自动化实践总结 at 2021年09月30日
    def wrapper_logger(func):
        @wraps(func)
        def wrapper(*args, **kw):
            start_time = time.time()
            logger.info("== method [%s] input args: [%s]====" % (func.__name__, args[1:]))
            result = func(*args, **kw)
            logger.info("== [%s] run time is %.3f ms =====" % (func.__name__, (time.time() - start_time)*1000))
            logger.info("== method [%s] response: [%s] ====" % (func.__name__, result))
            return result
        return wrapper
    

    😂
    比较简单,只是记录函数名和函数执行时间和函数返回值😂 日志有点乱,还可以优化

  • Appium UI 自动化实践总结 at 2021年09月30日

    😂 看来都是踩过坑的苦命人

  • Appium UI 自动化实践总结 at 2021年09月30日

    是的,图像匹配,分辨率对匹配的准确性影响还是挺大的

  • Appium UI 自动化实践总结 at 2021年09月30日

    具体指哪一方面呢😀 还请不吝赐教

  • Appium UI 自动化实践总结 at 2021年09月29日

    原来如此,还没接触过游戏测试,很厉害的样子!!

  • Appium UI 自动化实践总结 at 2021年09月29日

    图像识别主要用在无法定位的元素上面吗?现在项目中 99% 的元素都可以定位,所以就没在用图像识别,之前在原生 +h5 混合 app 中有使用过 airtest 的图像识别,感觉很不稳定

  • Appium 之测试微信小程序 at 2021年09月11日

    微信 8 从搜一搜里面打开也获取不到小程序?方便加微信或者 qq 沟通一下吗?

  • flutter 使用 appium+iOS XCUITest 框架,可以看到到元素,但是使用点击的时候获取不到,是如果在 appium 上可以看到元素,就可以使用这个元素执行吗?

    driver = Remote('http://localhost:4723/wd/hub', dict(
    platformName='iOS',
    automationName='XCUITest',
    platformVersion='13.7',
    udid="00008030-000644A80285802E",
    deviceName='Ly 的 iPhone',
    bundleId="com.yunzhanghu.ytt4mobile",

    ))
    driver.find_element_by_ios_predicate('value == "待装货 (7) Tab 2 of 3"').click()

    Traceback (most recent call last):
    File "/Users/llpan/Desktop/work/testcode/uiautotest/appium_common_utils/runner.py", line 39, in
    driver.find_element_by_ios_predicate('value == "待装货 (7) Tab 2 of 3"').click()
    File "/Users/llpan/Desktop/work/testcode/uiautotest/ENV/lib/python3.7/site-packages/appium/webdriver/extensions/search_context/ios.py", line 75, in find_element_by_ios_predicate
    return self.find_element(by=MobileBy.IOS_PREDICATE, value=predicate_string)
    File "/Users/llpan/Desktop/work/testcode/uiautotest/ENV/lib/python3.7/site-packages/appium/webdriver/webdriver.py", line 282, in find_element
    return self.execute(RemoteCommand.FIND_ELEMENT, {'using': by, 'value': value})['value']
    File "/Users/llpan/Desktop/work/testcode/uiautotest/ENV/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
    File "/Users/llpan/Desktop/work/testcode/uiautotest/ENV/lib/python3.7/site-packages/appium/webdriver/errorhandler.py", line 31, in check_response
    raise wde
    File "/Users/llpan/Desktop/work/testcode/uiautotest/ENV/lib/python3.7/site-packages/appium/webdriver/errorhandler.py", line 26, in check_response
    super().check_response(response)
    File "/Users/llpan/Desktop/work/testcode/uiautotest/ENV/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.NoSuchElementException: Message: An element could not be located on the page using the given search parameters.

  • 按照楼主方式,更新了 appium 里面的 appium-flutter-driver build 包,可以启动,但是元素抓取页面,一直在刷新,获取不到