【问题标题】:AWS device farm react native appium nodejs webdriverio test's not workingAWS设备场反应本机appium nodejs webdriverio测试不起作用
【发布时间】:2020-05-06 18:42:45
【问题描述】:

我已经使用 Appium 和 WebdriverIO 为 React Native 应用程序创建了测试,它在本地 Android 模拟器和真实设备上运行良好,但在 AWS 设备场上运行不正常。 这个教程https://medium.com/jetclosing-engineering/react-native-device-testing-w-appium-node-and-aws-device-farm-295081129790我跟着创建了一个测试。

问题是

[0-0] 2020-05-06T14:01:27.360Z INFO webdriver: COMMAND findElement("accessibility id", "app-root")
[0-0] 2020-05-06T14:01:27.370Z INFO webdriver: [POST] http://127.0.0.1:4723/wd/hub/session/5a7350a3-e8c2-4c9e-b31a-347ea4defcdb/element
[0-0] 2020-05-06T14:01:27.370Z INFO webdriver: DATA { using: 'accessibility id', value: 'app-root' }
[0-0] 2020-05-06T14:01:27.378Z INFO webdriver: COMMAND findElement("accessibility id", "loginEmail")
[0-0] 2020-05-06T14:01:27.388Z INFO webdriver: [POST] http://127.0.0.1:4723/wd/hub/session/5a7350a3-e8c2-4c9e-b31a-347ea4defcdb/element
2020-05-06T14:01:27.388Z INFO webdriver: DATA { using: 'accessibility id', value: 'loginEmail' }
2020-05-06T14:01:27.390Z INFO webdriver: COMMAND findElement("accessibility id", "app-root")
2020-05-06T14:01:27.393Z INFO webdriver: [POST] http://127.0.0.1:4723/wd/hub/session/5a7350a3-e8c2-4c9e-b31a-347ea4defcdb/element
2020-05-06T14:01:27.393Z INFO webdriver: DATA { using: 'accessibility id', value: 'app-root' }
[0-0] TypeError in "Simple App testing Valid Login Test"
$(...).setValue is not a function
[0-0] 2020-05-06T14:01:27.426Z INFO webdriver: COMMAND deleteSession()
[0-0] 2020-05-06T14:01:27.426Z INFO webdriver: [DELETE] http://127.0.0.1:4723/wd/hub/session/5a7350a3-e8c2-4c9e-b31a-347ea4defcdb
[0-0] 2020-05-06T14:01:28.306Z WARN webdriver: Request failed with status 500 due to An unknown server-side error occurred while processing the command. Original error: Could not proxy command to remote server. Original error: Error: socket hang up

同样的问题是 waitForDisplayed $(...).waitForDisplayed 不是一个函数

测试文件

var expect = require('chai').expect;

describe('Simple App testing', () => {

  it('App is loaded', async function () {
    expect($("~app-root")).to.exist;    
});

  it('Valid Login Test', async => {
    $("~app-root");
    $('~loginEmail').setValue("customer11@yopmail.com");
    $('~loginPassword').setValue("123456");

    $("~login").click();
    //$("~app-root").waitForDisplayed(11000, false);

    expect(true).to.equal(true);
  });
});

Package.json 文件

{
  "name": "tests",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "npm install && npx wdio ./wdio.conf.local.js",
    "package": "npm install && npm-pack-zip"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@wdio/cli": "^6.1.2",
    "@wdio/local-runner": "^6.1.2",
    "@wdio/mocha-framework": "^6.1.0",
    "@wdio/spec-reporter": "^6.0.16",
    "@wdio/sync": "^6.1.0",
    "wdio-chromedriver-service": "^6.0.2",
    "chromedriver": "^81.0.0",
    "chai": "^4.2.0",
    "webdriverio": "^6.1.2"
  },
  "devDependencies": {
    "npm-bundle": "^3.0.3",
    "npm-pack-zip": "^1.2.7"
  },
  "bundledDependencies": [
    "@wdio/cli",
    "@wdio/mocha-framework",
    "@wdio/local-runner",
    "@wdio/spec-reporter",
    "@wdio/sync",
    "webdriverio",
    "chai",
    "chromedriver",
    "wdio-chromedriver-service"
  ]
}

wdio.config.js 文件

exports.config = {

    runner: 'local',

    specs: [
        './test/specs/**/*.js'
    ],
    exclude: [
        // 'path/to/excluded/files'
    ]
    maxInstances: 1,
    capabilities: [{    
        maxInstances: 1,
        appWaitDuration: 100000,
        appWaitActivity: '*'
    }],
    logLevel: 'info',
    bail: 0,
    baseUrl: 'http://localhost',
    path: '/wd/hub',
    waitforTimeout: 10000,
    connectionRetryTimeout: 120000,
    connectionRetryCount: 3,
    services: ['appium'],
    port: 4723,
    framework: 'mocha',

    reporters: ['spec'],

    mochaOpts: {
        ui: 'bdd',
        timeout: 60000
    },
}

Yml 文件安装和测试阶段

phases:
  install:
    commands:
      - npm install -g appium
      - export APPIUM_VERSION=1.17.0
      - 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

      - cd $DEVICEFARM_TEST_PACKAGE_PATH
      - echo $DEVICEFARM_TEST_PACKAGE_PATH
      - npm install

  test:
    commands:
      - echo "Navigate to test source code"
      - cd $DEVICEFARM_TEST_PACKAGE_PATH/node_modules/*
      - echo "Start Appium Node test for Qbunk Android"
      - ls
      - echo $DEVICEFARM_TEST_PACKAGE_PATH
      - npm install
      - echo "Installing wdio"
      - npm install --save webdriverio @wdio/cli
      - echo "Installing chai"
      - npm install --save chai
      - npx wdio $DEVICEFARM_TEST_PACKAGE_PATH/wdio.conf.js --spec $DEVICEFARM_TEST_PACKAGE_PATH/test/specs/*.js          

有趣的是,我遵循了这个 https://aws.amazon.com/blogs/mobile/testing-mobile-apps-across-hundreds-of-real-devices-with-appium-node-js-and-aws-device-farm/ AWS 教程并使用 wd 编写了我的测试,在 AWS 设备场上运行良好。

如果您需要更多信息,请告诉我。 谢谢

【问题讨论】:

  • 您好,您是 corp 代理吗?
  • 对不起,我不明白什么是公司代理?
  • 企业代理?
  • 不,我不支持公司代理

标签: node.js react-native mocha.js webdriver-io aws-device-farm


【解决方案1】:

问题已解决,主要与Yml文件安装和测试阶段有关。 我现在在安装阶段全局安装 wdio cli 和 chai,之后我使用 npm install 安装所需的依赖项并在测试阶段运行测试

phases:
  install:
    commands:
      - export APPIUM_VERSION=1.16.0
      - 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
      - ls
      - echo "Installing wdio globally"
      - npm install -g webdriverio @wdio/cli
      - echo "Installing chai globally"
      - npm install -g chai
      - cd $DEVICEFARM_TEST_PACKAGE_PATH
      - npm install

  test:
    commands:
      - echo "Navigate to test source code"
      - cd $DEVICEFARM_TEST_PACKAGE_PATH/node_modules/*
      - npx wdio $DEVICEFARM_TEST_PACKAGE_PATH/wdio.conf.js --spec $DEVICEFARM_TEST_PACKAGE_PATH/test/specs/*.js    

另外,我不需要 zip 文件中的依赖项,所以我删除了 package.json 文件中的 bundledDependencies,我在 yml 安装阶段安装这些。

{
  "name": "tests",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "npm install && npx wdio ./wdio.conf.local.js",
    "package": "npm install && npm-pack-zip"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@wdio/cli": "^6.1.9",
    "@wdio/local-runner": "^6.1.2",
    "@wdio/mocha-framework": "^6.1.0",
    "@wdio/spec-reporter": "^6.0.16",
    "@wdio/sync": "^6.1.0",
    "chai": "^4.2.0",
    "chromedriver": "^81.0.0",
    "wdio-chromedriver-service": "^6.0.2",
    "webdriverio": "^6.1.9"
  },
  "devDependencies": {
    "npm-bundle": "^3.0.3",
    "npm-pack-zip": "^1.2.7"
  }
}

【讨论】:

  • 那么您是如何解决$(...).waitForDisplayed is not a function 问题的?
猜你喜欢
  • 2018-06-12
  • 2017-04-29
  • 2021-07-15
  • 2019-03-31
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
相关资源
最近更新 更多