当前位置: 首页 > 知识库问答 >
问题:

IOS设备场Appium Webdriverio问题

公冶伟
2023-03-14

我的团队面临着在Ios设备上运行测试的问题,他们运行速度非常慢,每个设备大约需要19分钟,在一些Ios为13的设备上,应用程序没有打开。在IOS 13上安装了应用程序,但未安装WDA,且应用程序未打开。

在本地,我们有Xcode 11.1、node 11.6.0、appium 1.17.1,所有这些都可以在本地环境中快速、良好地工作。仅供参考,Android的完美运行需要7分钟,设备场才能运行整个测试。

我们正在使用的YAML文件是aws设备群提供的最新文件。

version: 0.1

# Phases are collection of commands that get executed on Device Farm.
phases:
  # The install phase includes commands that install dependencies that your tests use.
  # Default dependencies for testing frameworks supported on Device Farm are already installed.
  install:
    commands:
      - export APPIUM_VERSION=1.17.1
      - avm $APPIUM_VERSION
      - ln -s /usr/local/avm/versions/$APPIUM_VERSION/node_modules/.bin/appium  /usr/local/avm/versions/$APPIUM_VERSION/node_modules/appium/bin/appium.js
      - echo "Node version"
      - node --version
      - echo "NPM version"
      - npm --version
      - echo "Installing wdio globally"
      - npm install -g webdriverio @wdio/cli

      - >-
        if [ $(echo $APPIUM_VERSION | cut -d "." -f2) -ge 15 ];
        then
          DEVICEFARM_DEVICE_UDID_FOR_APPIUM=$(echo $DEVICEFARM_DEVICE_UDID | tr -d "-");
          DEVICEFARM_WDA_DERIVED_DATA_PATH=$DEVICEFARM_WDA_DERIVED_DATA_PATH_V2;
        else
          DEVICEFARM_DEVICE_UDID_FOR_APPIUM=$DEVICEFARM_DEVICE_UDID;
          DEVICEFARM_WDA_DERIVED_DATA_PATH=$DEVICEFARM_WDA_DERIVED_DATA_PATH_V1;
        fi


  pre_test:
    commands:

      - echo "Start appium server"
      - >-
        appium --log-timestamp
        --default-capabilities "{\"usePrebuiltWDA\": true, \"derivedDataPath\":\"$DEVICEFARM_WDA_DERIVED_DATA_PATH\",
        \"deviceName\": \"$DEVICEFARM_DEVICE_NAME\", \"platformName\":\"$DEVICEFARM_DEVICE_PLATFORM_NAME\", \"app\":\"$DEVICEFARM_APP_PATH\",
        \"automationName\":\"XCUITest\", \"udid\":\"$DEVICEFARM_DEVICE_UDID_FOR_APPIUM\", \"platformVersion\":\"$DEVICEFARM_DEVICE_OS_VERSION\"}"
        >> $DEVICEFARM_LOG_DIR/appiumlog.txt 2>&1 &

      - >-
        start_appium_timeout=0;
        while [ true ];
        do
            if [ $start_appium_timeout -gt 60 ];
            then
                echo "appium server never started in 60 seconds. Exiting";
                exit 1;
            fi;
            grep -i "Appium REST http interface listener started on 0.0.0.0:4723" $DEVICEFARM_LOG_DIR/appiumlog.txt >> /dev/null 2>&1;
            if [ $? -eq 0 ];
            then
                echo "Appium REST http interface listener started on 0.0.0.0:4723";
                break;
            else
                echo "Waiting for appium server to start. Sleeping for 1 second";
                sleep 1;
                start_appium_timeout=$((start_appium_timeout+1));
            fi;
        done;

  # The test phase includes commands that run your test suite execution.
  test:
    commands:

      - cd $DEVICEFARM_TEST_PACKAGE_PATH
      - npm run test:ios

项目链接

共有1个答案

吴刚毅
2023-03-14

在iOS 13.3.1上,有一个已知的问题,即应用程序在使用Appium时无法打开,并且已在13.4上修复。有关该问题的更多详细信息,请参见:https://github.com/appium/appium/issues/13927

 类似资料:
  • 我最近对我已经在应用商店上的应用做了一些修改,几天后,我发现我的新版本因为在发布时崩溃而被拒绝。这很奇怪,因为我在ipad air、iphone6和iphone5上测试了它,它在所有3上都可以工作。我从苹果公司得到了以下崩溃日志,我想知道是否有人能帮我破译错误在哪里,因为这是我第一次遇到如此严重的错误。

  • 引言 本节将简要介绍iOS设备越狱的步骤。 越狱你的设备 如果你真的对iOS安全很感兴趣,有一个越狱设备是非常有必要的。在本节,我们将介绍如何越狱iOS设备。越狱之后有很多好处,你可以安装很多工具,例如nmap, metasploit,甚至在设备上运行自己写的python代码。 越狱非常简单,下载一个越狱软件,然后点击越狱就可以了。如果你的设备运行的是iOS 6.x到iOS 7.0.6的系统,推荐

  • 类似基于 Chromium 的浏览器一样, Electron 也提供了通过 web API 访问设备硬件的方法。 大部分接口就像在浏览器调用的 API 一样,但有一些差异需要考虑到。 Electron和浏览器之间的主要区别是请求访问设备时发生的情况。 在浏览器中,用户可以在弹出窗口中允许访问单独的设备。 在 Electron API中,提供了可供开发者自动选择设备或提示用户通过开发者创建的接口选择

  • 我尝试使用GCM发送APN。设备注册OK,GCM和IOS设备令牌被接收。当我尝试发送有效载荷没有"通知"节点: 一切正常。 但是我想处理应用程序在后台时的通知 根据文档,我将有效负载修改为: 第一次尝试: 但没有收到通知。 第二次尝试: 然后应用程序不会收到任何通知,即使我删除了通知节点。所以我必须移除它,重新安装,接收新的代币。 第二期: 我试图检查APN使用NWPusher,但得到错误:无效令

  • 问题内容: 我有一个简单的PHP网页,并且希望返回不同的内容,具体取决于是从iPhone / iPad还是从网络浏览器访问。我怎样才能做到这一点? 问题答案: 使用来自的用户代理,为了进行简单检测,可以使用以下脚本: 如果您想了解用户设备的更多详细信息,我建议使用以下解决方案之一:http : //51degrees.mobi或http://deviceatlas.com

  • 我正在尝试使用testng.xml...并且看起来设备场忽略了整个文件。 我的例子很简单。我有一个实例化测试类的工厂类,这就是我的xml文件的样子 我甚至尝试手动排除方法