Webdriverio: Servidor autônomo e apontar para um caminho errado. Defina `path: '/ wd / hub'` em seu wdio.conf.js

Criado em 29 jun. 2020  ·  39Comentários  ·  Fonte: webdriverio/webdriverio

Meio ambiente (favor preencher as seguintes informações):

  • Versão WebdriverIO: 6.1.20
  • Modo: [modo autônomo ou WDIO Testrunner]
  • Se WDIO Testrunner, executando sync / async: sync
  • Versão Node.js: 12.16.1
  • Versão NPM: 6.13.4
  • Nome e versão do navegador: 83
  • Nome e versão da plataforma: ubuntu 20.04LTS
  • Pacotes wdio adicionais usados ​​(se aplicável):
    "@wdio/allure-reporter": "^6.1.14", "@wdio/appium-service": "^6.1.16", "@wdio/dot-reporter": "^6.1.14", "@wdio/local-runner": "^6.1.20", "@wdio/mocha-framework": "^6.1.19", "@wdio/selenium-standalone-service": "^6.1.14", "@wdio/spec-reporter": "^6.1.14", "@wdio/sync": "^6.1.14", "chai": "^4.2.0", "chromedriver": "^83.0.0", "wdio-chromedriver-service": "^6.0.3"

Configuração do WebdriverIO
você pode encontrá-lo no url fornecido abaixo

Descreva o bug
Incapaz de acionar certos recursos ao usar o recurso multi-remoto, pois parece que as portas estão se sobrepondo e gera um erro, conforme mostrado na imagem anexada abaixo

Reproduzir

  • Extraia o código do repo
  • git checkout para master (branch de exemplo é o padrão)
  • execute 'npm i'
  • execute 'npm run test'

https://github.com/Amrkamel1/wdExample/tree/master

Comportamento esperado
Devo ser capaz de executar determinados recursos separadamente

Registro
image

Contexto adicional
Adicione qualquer outro contexto sobre o problema aqui.

Bug🐛 Needs Investigation help wanted

Todos 39 comentários

Ei,
obrigado por preencher o problema. Isso realmente parece um bug. Agradeceríamos qualquer ajuda sobre isso, então por favor nos ajude! Dê uma olhada em nossas diretrizes de contribuição e entre em contato se tiver alguma dúvida. Felicidades!

@ christian-bromann Parece que desde que este commit https://github.com/webdriverio/webdriverio/commit/c5a0167107a1a3e948ec83bfd5d5e518ff972412 , todos os recursos serão substituídos por /wd/hub por wdio-selenium-standalone-service e por / por wdio-appium-service , então eu entendo que por design esses serviços não podem ser usados ​​juntos. É correto que esta seja sua intenção?

        (
            Array.isArray(this.capabilities)
                ? this.capabilities
                : Object.values(this.capabilities)
        ).forEach((cap) => Object.assign(cap, DEFAULT_CONNECTION, { ...cap }))

@ Amrkamel1 Você pode tentar especificar path em recursos para Appium, pois isso pode substituir o valor padrão fornecido pelo serviço. Por exemplo:

{
    "platformName": "iOS",
    "platformVersion": "11.0",
    "deviceName": "iPhone 7",
    "automationName": "XCUITest",
    "app": "/path/to/my.app"
+  "path": "/"
}

Não sei qual é o caso de uso de usar esses 2 serviços juntos, mas talvez a abordagem acima funcione.

@hieuxlu

não tenho certeza se entendi você, esse caminho deve ser o caminho para o que

 androidClient: {
      port: 4723,
      capabilities: {
        platformName: 'Android',
        browserName: 'chrome',
        'appium:deviceName': 'pixel2',
        'appium:avd': 'pixel2',
        'appium:platformVersion': '10',
        **path: '/'**
    }

É correto que esta seja sua intenção?

@hieuxlu sim. Os usuários ainda podem definir o caminho corretamente na configuração para executar os dois serviços juntos. Infelizmente, o servidor autônomo de selênio requer que o caminho esteja em /wd/hub . Sua sugestão deve funcionar. Se você tiver uma solução melhor para lidar com isso, entre em contato conosco. Felicidades!

@ Amrkamel1 Esse deve ser o caminho para o servidor Appium, acho que por padrão deve ser /wd/hub . Se você não definir explicitamente o caminho na configuração ou nas capacidades, por padrão, wdio-appium-service o substituirá por / , o que resultará em erro para selenium-standalone .

Por esse motivo, você deve definir path: '/wd/hub' na configuração do wdio ou em cada um dos recursos se, de alguma forma, o ponto de extremidade para Appium e selênio independente for diferente. Eu sugeriria tentar definir o caminho em wdio.conf.js primeiro

exports.config = {
+ path: '/wd/hub', 
  specs: ['./test/specs/*.spec.js'],

https://github.com/Amrkamel1/wdExample/blob/master/wdio.conf.js

@hieuxlu

sem sorte, ainda não consigo executar o teste, estou recebendo o erro abaixo

image

Isso é diferente, posso ver que o servidor Appium foi iniciado com êxito, então o erro original deve ser resolvido. O erro acima deve estar relacionado ao nível de log, você pode querer definir o nível de log explicitamente

@ Amrkamel1 talvez tente reinstalar as dependências, isso parece um erro estranho.

@ christian-bromann @hieuxlu

Eu já apaguei todos os node_modules e reinstalei tudo, ainda obtendo erros como mostrado abaixo

`2020-07-29T12:07:29.743Z DEBUG @wdio/utils:initialiseServices: initialise service "selenium-standalone" as NPM package
2020-07-29T12:07:29.744Z DEBUG @wdio/utils:initialiseServices: initialise service "appium" as NPM package
2020-07-29T12:07:29.746Z INFO @wdio/cli:launcher: Run onPrepare hook
2020-07-29T12:07:29.755Z DEBUG @wdio/appium-service: Will spawn Appium process: cmd /c appium --base-path / --debug-log-spacing --session-override --port 4728
2020-07-29T12:07:31.185Z DEBUG @wdio/appium-service: Appium started with ID: 5496
2020-07-29T12:07:31.953Z INFO @wdio/cli:launcher: Run onWorkerStart hook
2020-07-29T12:07:31.957Z INFO @wdio/local-runner: Start worker 0-0 with arg: wdio.conf.js
[0-0] 2020-07-29T12:07:32.514Z INFO @wdio/local-runner: Run worker command: run
[0-0] 2020-07-29T12:07:33.394Z DEBUG @wdio/local-runner:utils: init multiremote session
[0-0] 2020-07-29T12:07:33.397Z INFO webdriverio: Initiate new session using the ./protocol-stub protocol
[0-0] 2020-07-29T12:07:33.398Z INFO webdriverio: Initiate new session using the ./protocol-stub protocol
[0-0] RUNNING in MultiRemote - C:\Users\amrka\Desktop\wdExample\test\specs\test.spec.js
[0-0] 2020-07-29T12:07:33.424Z DEBUG @wdio/utils:initialiseServices: initialise service "selenium-standalone" as NPM package
2020-07-29T12:07:33.425Z DEBUG @wdio/utils:initialiseServices: initialise service "appium" as NPM package
[0-0] 2020-07-29T12:07:33.426Z DEBUG @wdio/local-runner:utils: init multiremote session
[0-0] 2020-07-29T12:07:33.427Z INFO webdriverio: Initiate new session using the webdriver protocol
2020-07-29T12:07:33.427Z INFO webdriverio: Initiate new session using the webdriver protocol
[0-0] 2020-07-29T12:07:33.428Z INFO webdriver: [POST] http://localhost:4728/session
[0-0] 2020-07-29T12:07:33.428Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: { browserName: 'chrome', platformName: 'chrome', path: '/wd/hub' },
    firstMatch: [ {} ]
  },
  desiredCapabilities: { browserName: 'chrome', platformName: 'chrome', path: '/wd/hub' }
}
[0-0] 2020-07-29T12:07:33.435Z INFO webdriver: [POST] http://localhost:4728/session
2020-07-29T12:07:33.435Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: {
      platformName: 'Android',
      browserName: 'chrome',
      'appium:deviceName': 'pixel2',
      'appium:avd': 'pixel2',
      'appium:platformVersion': '10',
      'appium:avdLaunchTimeout': 120000,
      'appium:avdReadyTimeout': 120000,
      'appium:uiautomator2ServerInstallTimeout': 120000,
      'appium:appWaitForLaunch': true,
      'appium:ensureWebviewsHavePages': true,
      'appium:disableWindowAnimation': true,
      'appium:autoGrantPermissions': true,
      'appium:clearSystemFiles': true,
      'appium:nativeWebScreenshot': true,
      path: '/wd/hub'
    },
    firstMatch: [ {} ]
  },
  desiredCapabilities: {
    platformName: 'Android',
    browserName: 'chrome',
    'appium:deviceName': 'pixel2',
    'appium:avd': 'pixel2',
    'appium:platformVersion': '10',
    'appium:avdLaunchTimeout': 120000,
    'appium:avdReadyTimeout': 120000,
    'appium:uiautomator2ServerInstallTimeout': 120000,
    'appium:appWaitForLaunch': true,
    'appium:ensureWebviewsHavePages': true,
    'appium:disableWindowAnimation': true,
    'appium:autoGrantPermissions': true,
    'appium:clearSystemFiles': true,
    'appium:nativeWebScreenshot': true,
    path: '/wd/hub'
  }
}
[0-0] 2020-07-29T12:07:33.576Z DEBUG webdriver: request failed due to status 13
[0-0] 2020-07-29T12:07:33.576Z WARN webdriver: Request failed with status 500 due to An unknown server-side error occurred while processing the command. Original error: Cannot read property 'toLowerCase' of undefined
[0-0] 2020-07-29T12:07:33.576Z INFO webdriver: Retrying 1/3
2020-07-29T12:07:33.576Z INFO webdriver: [POST] http://localhost:4728/session
2020-07-29T12:07:33.577Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: { browserName: 'chrome', platformName: 'chrome', path: '/wd/hub' },
    firstMatch: [ {} ]
  },
  desiredCapabilities: { browserName: 'chrome', platformName: 'chrome', path: '/wd/hub' }
}
[0-0] 2020-07-29T12:07:33.868Z DEBUG webdriver: request failed due to status 13
[0-0] 2020-07-29T12:07:33.868Z WARN webdriver: Request failed with status 500 due to An unknown server-side error occurred while processing the command. Original error: Cannot read property 'toLowerCase' of undefined
[0-0] 2020-07-29T12:07:33.868Z INFO webdriver: Retrying 2/3
2020-07-29T12:07:33.868Z INFO webdriver: [POST] http://localhost:4728/session
2020-07-29T12:07:33.868Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: { browserName: 'chrome', platformName: 'chrome', path: '/wd/hub' },
    firstMatch: [ {} ]
  },
  desiredCapabilities: { browserName: 'chrome', platformName: 'chrome', path: '/wd/hub' }
}
[0-0] 2020-07-29T12:07:33.912Z DEBUG webdriver: request failed due to status 13
[0-0] 2020-07-29T12:07:33.912Z WARN webdriver: Request failed with status 500 due to An unknown server-side error occurred while processing the command. Original error: Cannot read property 'toLowerCase' of undefined
[0-0] 2020-07-29T12:07:33.912Z INFO webdriver: Retrying 3/3
2020-07-29T12:07:33.912Z INFO webdriver: [POST] http://localhost:4728/session
2020-07-29T12:07:33.912Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: { browserName: 'chrome', platformName: 'chrome', path: '/wd/hub' },
    firstMatch: [ {} ]
  },
  desiredCapabilities: { browserName: 'chrome', platformName: 'chrome', path: '/wd/hub' }
}
[0-0] 2020-07-29T12:07:33.926Z DEBUG webdriver: request failed due to status 13
[0-0] 2020-07-29T12:07:33.926Z ERROR webdriver: Request failed with status 500 due to Error: An unknown server-side error occurred while processing the command. Original error: Cannot read property 'toLowerCase' of undefined 
2020-07-29T12:07:33.927Z ERROR webdriver: Error: An unknown server-side error occurred while processing the command. Original error: Cannot read property 'toLowerCase' of undefined
    at getErrorFromResponseBody (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:121:10)
    at WebDriverRequest._request (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\request.js:149:56)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async startWebDriverSession (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:41:16)
    at async Function.newSession (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\index.js:44:23)
    at async remote (C:\Users\amrka\Desktop\wdExample\node_modules\webdriverio\build\index.js:75:20)
    at async C:\Users\amrka\Desktop\wdExample\node_modules\webdriverio\build\index.js:104:22
    at async Promise.all (index 0)
    at async multiremote (C:\Users\amrka\Desktop\wdExample\node_modules\webdriverio\build\index.js:103:3)
    at async initialiseInstance (C:\Users\amrka\Desktop\wdExample\node_modules\@wdio\runner\build\utils.js:81:19)
[0-0]  Error:  Failed to create session.
An unknown server-side error occurred while processing the command. Original error: Cannot read property 'toLowerCase' of undefined
[0-0] 2020-07-29T12:07:33.927Z ERROR @wdio/runner: Error: Failed to create session.
An unknown server-side error occurred while processing the command. Original error: Cannot read property 'toLowerCase' of undefined
    at startWebDriverSession (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:45:11)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
2020-07-29T12:07:34.041Z DEBUG @wdio/local-runner: Runner 0-0 finished with exit code 1
[0-0] FAILED in MultiRemote - C:\Users\amrka\Desktop\wdExample\test\specs\test.spec.js
2020-07-29T12:07:34.043Z INFO @wdio/cli:launcher: Run onComplete hook
2020-07-29T12:07:34.043Z INFO @wdio/selenium-standalone-service: shutting down all browsers
2020-07-29T12:07:34.044Z DEBUG @wdio/appium-service: Appium (pid: 18320) killed

Spec Files:      0 passed, 1 failed, 1 total (100% completed) in 00:00:04`

@ Amrkamel1 este é um erro diferente agora, veja a mensagem de erro:

Cannot read property 'toLowerCase' of undefined
    at getErrorFromResponseBody (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:121:10)

Verifique por que o erro está ocorrendo aqui.

@ christian-bromann

Ok, eu resolvi esse problema com o LowCase, depois disso tentei a abordagem fornecida acima e ainda recebo o primeiro erro, verifique abaixo minha configuração do wdio

`exports.config = {
  specs: ['./test/specs/*.spec.js'],
  path: '/wd/hub',


  capabilities: {
    myChromeBrowser: {
      port: 4444,
        capabilities: {
            browserName: 'chrome',
            // path: '/wd/hub'
        }
    },
    androidClient: {
      port: 4728,
      capabilities: {
        platformName: 'Android',
        browserName: 'chrome',
        'appium:deviceName': 'pixel2',
        'appium:avd': 'pixel2',
        'appium:platformVersion': '10',
        'appium:avdLaunchTimeout': 120000,
        'appium:avdReadyTimeout': 120000,
        'appium:uiautomator2ServerInstallTimeout' :120000,
        'appium:appWaitForLaunch': true,
        'appium:ensureWebviewsHavePages': true,
        'appium:disableWindowAnimation': true,
        'appium:autoGrantPermissions': true,
        'appium:clearSystemFiles': true,
        'appium:nativeWebScreenshot': true,
            // path: '/wd/hub'
          }
  }
},

  sync: true,
  logLevel: 'trace',
  coloredLogs: true,
  baseUrl: 'http://demo.virtocommerce.com/',
  waitforTimeout: 10000,
  connectionRetryTimeout: 90000,
  connectionRetryCount: 3,
  framework: 'mocha',
  reporters: ['spec','dot'],
  maxInstances: 2,

services: [
  ['selenium-standalone', {
      args: {
        seleniumArgs: ['-port', '4444']
      },
  }],  
  ['appium',{
    command : 'appium',
    args: {
        debugLogSpacing: true,
        sessionOverride: true,
        port: 4728,
    },
  }]
],

  mochaOpts: {
    ui: 'bdd'
  },
}
`

image

@ Amrkamel1, por favor, o comentário acima:

Por este motivo, você deve definir path: '/wd/hub' na configuração do wdio, ou em cada uma das capacidades, se de alguma forma o endpoint para Appium e selênio-independente for diferente

@ christian-bromann

Eu já tentei todas essas combinações diferentes, colocando "path: '/ wd / hub' em wido config não funcionou

o comentário que a linha e adicionei em cada maiúscula não funciona, então adicionei o caminho: '/ wd / hub' na configuração do wdio e em maiúsculas também não funcionou

então usei o caminho: '/' na configuração do wdio e removi o caminho das letras maiúsculas, não funcionou
então eu comento e adiciono maiúsculas, não funcionou

então eu adicionei um caminho: '/' e outro "caminho: '/ wd / hub' e vice também não funcionou

eu estava recebendo o mesmo erro para todas essas tentativas

Desculpe, pelos seus trechos de código, parece que você comentou isso, e é por isso que fui apontado. Você pode tentar:

exports.config = {
  specs: ['./test/specs/*.spec.js'],

  capabilities: {
    myChromeBrowser: {
      port: 4444,
      path: '/wd/hub'
      capabilities: {
        browserName: 'chrome',
        path: '/wd/hub'
      }
    },
    androidClient: {
      port: 4728,
      path: '/wd/hub'
      capabilities: {
        path: '/wd/hub'
        platformName: 'Android',
        browserName: 'chrome',
        'appium:deviceName': 'pixel2',
        'appium:avd': 'pixel2',
        'appium:platformVersion': '10',
        'appium:avdLaunchTimeout': 120000,
        'appium:avdReadyTimeout': 120000,
        'appium:uiautomator2ServerInstallTimeout' :120000,
        'appium:appWaitForLaunch': true,
        'appium:ensureWebviewsHavePages': true,
        'appium:disableWindowAnimation': true,
        'appium:autoGrantPermissions': true,
        'appium:clearSystemFiles': true,
        'appium:nativeWebScreenshot': true
      }
    }
  },
  // ...
}

@ christian-bromann mesmo erro

`2020-07-29T14:32:22.539Z DEBUG @wdio/utils:initialiseServices: initialise service "selenium-standalone" as NPM package
2020-07-29T14:32:22.542Z DEBUG @wdio/utils:initialiseServices: initialise service "appium" as NPM package
2020-07-29T14:32:22.544Z INFO @wdio/cli:launcher: Run onPrepare hook
2020-07-29T14:32:22.549Z DEBUG @wdio/appium-service: Will spawn Appium process: cmd /c appium --base-path / --debug-log-spacing --session-override --port 4728
2020-07-29T14:32:24.039Z DEBUG @wdio/appium-service: Appium started with ID: 9120
2020-07-29T14:32:24.444Z INFO @wdio/cli:launcher: Run onWorkerStart hook
2020-07-29T14:32:24.448Z INFO @wdio/local-runner: Start worker 0-0 with arg: wdio.conf.js
[0-0] 2020-07-29T14:32:24.988Z INFO @wdio/local-runner: Run worker command: run
[0-0] 2020-07-29T14:32:25.849Z DEBUG @wdio/local-runner:utils: init multiremote session
[0-0] 2020-07-29T14:32:25.852Z INFO webdriverio: Initiate new session using the ./protocol-stub protocol
[0-0] 2020-07-29T14:32:25.853Z INFO webdriverio: Initiate new session using the ./protocol-stub protocol
[0-0] RUNNING in MultiRemote - C:\Users\amrka\Desktop\wdExample\test\specs\test.spec.js
[0-0] 2020-07-29T14:32:25.878Z DEBUG @wdio/utils:initialiseServices: initialise service "selenium-standalone" as NPM package
2020-07-29T14:32:25.879Z DEBUG @wdio/utils:initialiseServices: initialise service "appium" as NPM package
2020-07-29T14:32:25.879Z DEBUG @wdio/local-runner:utils: init multiremote session
[0-0] 2020-07-29T14:32:25.881Z INFO webdriverio: Initiate new session using the webdriver protocol
2020-07-29T14:32:25.881Z INFO webdriverio: Initiate new session using the webdriver protocol
[0-0] 2020-07-29T14:32:25.883Z INFO webdriver: [POST] http://localhost:4444/session
[0-0] 2020-07-29T14:32:25.884Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: { browserName: 'chrome', path: '/wd/hub' },
    firstMatch: [ {} ]
  },
  desiredCapabilities: { browserName: 'chrome', path: '/wd/hub' }
}
[0-0] 2020-07-29T14:32:25.889Z INFO webdriver: [POST] http://localhost:4728/wd/hub/session
[0-0] 2020-07-29T14:32:25.890Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: {
      platformName: 'Android',
      browserName: 'chrome',
      'appium:deviceName': 'pixel2',
      'appium:avd': 'pixel2',
      'appium:platformVersion': '10',
      'appium:avdLaunchTimeout': 120000,
      'appium:avdReadyTimeout': 120000,
      'appium:uiautomator2ServerInstallTimeout': 120000,
      'appium:appWaitForLaunch': true,
      'appium:ensureWebviewsHavePages': true,
      'appium:disableWindowAnimation': true,
      'appium:autoGrantPermissions': true,
      'appium:clearSystemFiles': true,
      'appium:nativeWebScreenshot': true
    },
    firstMatch: [ {} ]
  },
  desiredCapabilities: {
    platformName: 'Android',
    browserName: 'chrome',
    'appium:deviceName': 'pixel2',
    'appium:avd': 'pixel2',
    'appium:platformVersion': '10',
    'appium:avdLaunchTimeout': 120000,
    'appium:avdReadyTimeout': 120000,
    'appium:uiautomator2ServerInstallTimeout': 120000,
    'appium:appWaitForLaunch': true,
    'appium:ensureWebviewsHavePages': true,
    'appium:disableWindowAnimation': true,
    'appium:autoGrantPermissions': true,
    'appium:clearSystemFiles': true,
    'appium:nativeWebScreenshot': true
  }
}
[0-0] 2020-07-29T14:32:25.929Z DEBUG webdriver: request failed due to missing body
[0-0] 2020-07-29T14:32:25.930Z WARN webdriver: Request failed with status 404 due to <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="/assets/displayhelpservlet.css" media="all"/>
  <link href="/assets/favicon.ico" rel="icon" type="image/x-icon" />
  <script src="/assets/jquery-3.1.1.min.js" type="text/javascript"></script>
  <script src="/assets/displayhelpservlet.js" type="text/javascript"></script>
  <script type="text/javascript">
    var json = Object.freeze('{"consoleLink": "\u002fwd\u002fhub","type": "Standalone","class": "org.openqa.grid.web.servlet.DisplayHelpHandler$DisplayHelpServletConfig","version": "3.141.59"}');
  </script>
</head>
<body>

<div id="content">
  <div id="help-heading">
    <h1><span id="logo"></span></h1>
    <h2>Selenium <span class="se-type"></span>&nbsp;v.<span class="se-version"></span></h2>
  </div>

  <div id="content-body">
    <p>
      Whoops! The URL specified routes to this help page.
    </p>
    <p>
      For more information about Selenium <span class="se-type"></span> please see the
      <a class="se-docs">docs</a> and/or visit the <a class="se-wiki">wiki</a>.
      <span id="console-item">
        Or perhaps you are looking for the Selenium <span class="se-type"></span> <a class="se-console">console</a>.
      </span>
    </p>
    <p>
      Happy Testing!
    </p>
  </div>

  <div>
    <footer id="help-footer">
      Selenium is made possible through the efforts of our open source community, contributions from
      these <a href="https://github.com/SeleniumHQ/selenium/blob/master/AUTHORS">people</a>, and our
      <a href="http://www.seleniumhq.org/sponsors/">sponsors</a>.
   </footer>
  </div>
 </div>

</body>
</html>
[0-0] 2020-07-29T14:32:25.930Z INFO webdriver: Retrying 1/3
2020-07-29T14:32:25.930Z INFO webdriver: [POST] http://localhost:4444/session
2020-07-29T14:32:25.930Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: { browserName: 'chrome', path: '/wd/hub' },
    firstMatch: [ {} ]
  },
  desiredCapabilities: { browserName: 'chrome', path: '/wd/hub' }
}
2020-07-29T14:32:25.939Z DEBUG webdriver: request failed due to missing body
2020-07-29T14:32:25.940Z INFO webdriver: Retrying 2/3
2020-07-29T14:32:25.940Z INFO webdriver: [POST] http://localhost:4444/session
2020-07-29T14:32:25.940Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: { browserName: 'chrome', path: '/wd/hub' },
    firstMatch: [ {} ]
  },
  desiredCapabilities: { browserName: 'chrome', path: '/wd/hub' }
}
2020-07-29T14:32:25.947Z DEBUG webdriver: request failed due to missing body
2020-07-29T14:32:25.947Z INFO webdriver: Retrying 3/3
2020-07-29T14:32:25.948Z INFO webdriver: [POST] http://localhost:4444/session
2020-07-29T14:32:25.948Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: { browserName: 'chrome', path: '/wd/hub' },
    firstMatch: [ {} ]
  },
  desiredCapabilities: { browserName: 'chrome', path: '/wd/hub' }
}
[0-0] 2020-07-29T14:32:25.940Z WARN webdriver: Request failed with status 404 due to <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="/assets/displayhelpservlet.css" media="all"/>
  <link href="/assets/favicon.ico" rel="icon" type="image/x-icon" />
  <script src="/assets/jquery-3.1.1.min.js" type="text/javascript"></script>
  <script src="/assets/displayhelpservlet.js" type="text/javascript"></script>
  <script type="text/javascript">
    var json = Object.freeze('{"consoleLink": "\u002fwd\u002fhub","type": "Standalone","class": "org.openqa.grid.web.servlet.DisplayHelpHandler$DisplayHelpServletConfig","version": "3.141.59"}');
  </script>
</head>
<body>

<div id="content">
  <div id="help-heading">
    <h1><span id="logo"></span></h1>
    <h2>Selenium <span class="se-type"></span>&nbsp;v.<span class="se-version"></span></h2>
  </div>

  <div id="content-body">
    <p>
      Whoops! The URL specified routes to this help page.
    </p>
    <p>
      For more information about Selenium <span class="se-type"></span> please see the
      <a class="se-docs">docs</a> and/or visit the <a class="se-wiki">wiki</a>.
      <span id="console-item">
        Or perhaps you are looking for the Selenium <span class="se-type"></span> <a class="se-console">console</a>.
      </span>
    </p>
    <p>
      Happy Testing!
    </p>
  </div>

  <div>
    <footer id="help-footer">
      Selenium is made possible through the efforts of our open source community, contributions from
      these <a href="https://github.com/SeleniumHQ/selenium/blob/master/AUTHORS">people</a>, and our
      <a href="http://www.seleniumhq.org/sponsors/">sponsors</a>.
   </footer>
  </div>
 </div>

</body>
</html>
2020-07-29T14:32:25.947Z WARN webdriver: Request failed with status 404 due to <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="/assets/displayhelpservlet.css" media="all"/>
  <link href="/assets/favicon.ico" rel="icon" type="image/x-icon" />
  <script src="/assets/jquery-3.1.1.min.js" type="text/javascript"></script>
  <script src="/assets/displayhelpservlet.js" type="text/javascript"></script>
  <script type="text/javascript">
    var json = Object.freeze('{"consoleLink": "\u002fwd\u002fhub","type": "Standalone","class": "org.openqa.grid.web.servlet.DisplayHelpHandler$DisplayHelpServletConfig","version": "3.141.59"}');
  </script>
</head>
<body>

<div id="content">
  <div id="help-heading">
    <h1><span id="logo"></span></h1>
    <h2>Selenium <span class="se-type"></span>&nbsp;v.<span class="se-version"></span></h2>
  </div>

  <div id="content-body">
    <p>
      Whoops! The URL specified routes to this help page.
    </p>
    <p>
      For more information about Selenium <span class="se-type"></span> please see the
      <a class="se-docs">docs</a> and/or visit the <a class="se-wiki">wiki</a>.
      <span id="console-item">
        Or perhaps you are looking for the Selenium <span class="se-type"></span> <a class="se-console">console</a>.
      </span>
    </p>
    <p>
      Happy Testing!
    </p>
  </div>

  <div>
    <footer id="help-footer">
      Selenium is made possible through the efforts of our open source community, contributions from
      these <a href="https://github.com/SeleniumHQ/selenium/blob/master/AUTHORS">people</a>, and our
      <a href="http://www.seleniumhq.org/sponsors/">sponsors</a>.
   </footer>
  </div>
 </div>

</body>
</html>
2020-07-29T14:32:25.953Z ERROR webdriver: Request failed with status 404 due to Error: <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="/assets/displayhelpservlet.css" media="all"/>
  <link href="/assets/favicon.ico" rel="icon" type="image/x-icon" />
  <script src="/assets/jquery-3.1.1.min.js" type="text/javascript"></script>
  <script src="/assets/displayhelpservlet.js" type="text/javascript"></script>
  <script type="text/javascript">
    var json = Object.freeze('{"consoleLink": "\u002fwd\u002fhub","type": "Standalone","class": "org.openqa.grid.web.servlet.DisplayHelpHandler$DisplayHelpServletConfig","version": "3.141.59"}');
  </script>
</head>
<body>

<div id="content">
  <div id="help-heading">
    <h1><span id="logo"></span></h1>
    <h2>Selenium <span class="se-type"></span>&nbsp;v.<span class="se-version"></span></h2>
  </div>

  <div id="content-body">
    <p>
      Whoops! The URL specified routes to this help page.
    </p>
    <p>
      For more information about Selenium <span class="se-type"></span> please see the
      <a class="se-docs">docs</a> and/or visit the <a class="se-wiki">wiki</a>.
      <span id="console-item">
        Or perhaps you are looking for the Selenium <span class="se-type"></span> <a class="se-console">console</a>.
      </span>
    </p>
    <p>
      Happy Testing!
    </p>
  </div>

  <div>
    <footer id="help-footer">
      Selenium is made possible through the efforts of our open source community, contributions from
      these <a href="https://github.com/SeleniumHQ/selenium/blob/master/AUTHORS">people</a>, and our
      <a href="http://www.seleniumhq.org/sponsors/">sponsors</a>.
   </footer>
  </div>
 </div>

</body>
</html>
2020-07-29T14:32:25.953Z ERROR webdriver: Error: <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="/assets/displayhelpservlet.css" media="all"/>
  <link href="/assets/favicon.ico" rel="icon" type="image/x-icon" />
  <script src="/assets/jquery-3.1.1.min.js" type="text/javascript"></script>
  <script src="/assets/displayhelpservlet.js" type="text/javascript"></script>
  <script type="text/javascript">
    var json = Object.freeze('{"consoleLink": "\u002fwd\u002fhub","type": "Standalone","class": "org.openqa.grid.web.servlet.DisplayHelpHandler$DisplayHelpServletConfig","version": "3.141.59"}');
  </script>
</head>
<body>

<div id="content">
  <div id="help-heading">
    <h1><span id="logo"></span></h1>
    <h2>Selenium <span class="se-type"></span>&nbsp;v.<span class="se-version"></span></h2>
  </div>

  <div id="content-body">
    <p>
      Whoops! The URL specified routes to this help page.
    </p>
    <p>
      For more information about Selenium <span class="se-type"></span> please see the
      <a class="se-docs">docs</a> and/or visit the <a class="se-wiki">wiki</a>.
      <span id="console-item">
        Or perhaps you are looking for the Selenium <span class="se-type"></span> <a class="se-console">console</a>.
      </span>
    </p>
    <p>
      Happy Testing!
    </p>
  </div>

  <div>
    <footer id="help-footer">
      Selenium is made possible through the efforts of our open source community, contributions from
      these <a href="https://github.com/SeleniumHQ/selenium/blob/master/AUTHORS">people</a>, and our
      <a href="http://www.seleniumhq.org/sponsors/">sponsors</a>.
   </footer>
  </div>
 </div>

</body>
</html>
    at getErrorFromResponseBody (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:114:12)
    at WebDriverRequest._request (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\request.js:149:56)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async startWebDriverSession (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:41:16)
    at async Function.newSession (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\index.js:44:23)
    at async remote (C:\Users\amrka\Desktop\wdExample\node_modules\webdriverio\build\index.js:75:20)
    at async C:\Users\amrka\Desktop\wdExample\node_modules\webdriverio\build\index.js:104:22
    at async Promise.all (index 0)
    at async multiremote (C:\Users\amrka\Desktop\wdExample\node_modules\webdriverio\build\index.js:103:3)
    at async initialiseInstance (C:\Users\amrka\Desktop\wdExample\node_modules\@wdio\runner\build\utils.js:81:19)
2020-07-29T14:32:25.953Z ERROR @wdio/runner: Error: Failed to create session.
It seems you are running a Selenium Standalone server and point to a wrong path. Please set `path: '/wd/hub'` in your wdio.conf.js!
    at startWebDriverSession (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:45:11)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
2020-07-29T14:32:25.960Z WARN webdriver: Request failed with status 404 due to The URL '/wd/hub/session' did not map to a valid resource
[0-0]  Error:  Failed to create session.
It seems you are running a Selenium Standalone server and point to a wrong path. Please set `path: '/wd/hub'` in your wdio.conf.js!
[0-0] 2020-07-29T14:32:25.953Z DEBUG webdriver: request failed due to missing body
2020-07-29T14:32:25.960Z DEBUG webdriver: request failed due to missing body
2020-07-29T14:32:25.961Z INFO webdriver: Retrying 1/3
2020-07-29T14:32:25.961Z INFO webdriver: [POST] http://localhost:4728/wd/hub/session
2020-07-29T14:32:25.961Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: {
      platformName: 'Android',
      browserName: 'chrome',
      'appium:deviceName': 'pixel2',
      'appium:avd': 'pixel2',
      'appium:platformVersion': '10',
      'appium:avdLaunchTimeout': 120000,
      'appium:avdReadyTimeout': 120000,
      'appium:uiautomator2ServerInstallTimeout': 120000,
      'appium:appWaitForLaunch': true,
      'appium:ensureWebviewsHavePages': true,
      'appium:disableWindowAnimation': true,
      'appium:autoGrantPermissions': true,
      'appium:clearSystemFiles': true,
      'appium:nativeWebScreenshot': true
    },
    firstMatch: [ {} ]
  },
  desiredCapabilities: {
    platformName: 'Android',
    browserName: 'chrome',
    'appium:deviceName': 'pixel2',
    'appium:avd': 'pixel2',
    'appium:platformVersion': '10',
    'appium:avdLaunchTimeout': 120000,
    'appium:avdReadyTimeout': 120000,
    'appium:uiautomator2ServerInstallTimeout': 120000,
    'appium:appWaitForLaunch': true,
    'appium:ensureWebviewsHavePages': true,
    'appium:disableWindowAnimation': true,
    'appium:autoGrantPermissions': true,
    'appium:clearSystemFiles': true,
    'appium:nativeWebScreenshot': true
  }
}
2020-07-29T14:32:25.966Z DEBUG webdriver: request failed due to missing body
2020-07-29T14:32:25.967Z INFO webdriver: Retrying 2/3
2020-07-29T14:32:25.967Z INFO webdriver: [POST] http://localhost:4728/wd/hub/session
2020-07-29T14:32:25.967Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: {
      platformName: 'Android',
      browserName: 'chrome',
      'appium:deviceName': 'pixel2',
      'appium:avd': 'pixel2',
      'appium:platformVersion': '10',
      'appium:avdLaunchTimeout': 120000,
      'appium:avdReadyTimeout': 120000,
      'appium:uiautomator2ServerInstallTimeout': 120000,
      'appium:appWaitForLaunch': true,
      'appium:ensureWebviewsHavePages': true,
      'appium:disableWindowAnimation': true,
      'appium:autoGrantPermissions': true,
      'appium:clearSystemFiles': true,
      'appium:nativeWebScreenshot': true
    },
    firstMatch: [ {} ]
  },
  desiredCapabilities: {
    platformName: 'Android',
    browserName: 'chrome',
    'appium:deviceName': 'pixel2',
    'appium:avd': 'pixel2',
    'appium:platformVersion': '10',
    'appium:avdLaunchTimeout': 120000,
    'appium:avdReadyTimeout': 120000,
    'appium:uiautomator2ServerInstallTimeout': 120000,
    'appium:appWaitForLaunch': true,
    'appium:ensureWebviewsHavePages': true,
    'appium:disableWindowAnimation': true,
    'appium:autoGrantPermissions': true,
    'appium:clearSystemFiles': true,
    'appium:nativeWebScreenshot': true
  }
}
2020-07-29T14:32:25.971Z DEBUG webdriver: request failed due to missing body
2020-07-29T14:32:25.971Z INFO webdriver: Retrying 3/3
2020-07-29T14:32:25.971Z INFO webdriver: [POST] http://localhost:4728/wd/hub/session
2020-07-29T14:32:25.971Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: {
      platformName: 'Android',
      browserName: 'chrome',
      'appium:deviceName': 'pixel2',
      'appium:avd': 'pixel2',
      'appium:platformVersion': '10',
      'appium:avdLaunchTimeout': 120000,
      'appium:avdReadyTimeout': 120000,
      'appium:uiautomator2ServerInstallTimeout': 120000,
      'appium:appWaitForLaunch': true,
      'appium:ensureWebviewsHavePages': true,
      'appium:disableWindowAnimation': true,
      'appium:autoGrantPermissions': true,
      'appium:clearSystemFiles': true,
      'appium:nativeWebScreenshot': true
    },
    firstMatch: [ {} ]
  },
  desiredCapabilities: {
    platformName: 'Android',
    browserName: 'chrome',
    'appium:deviceName': 'pixel2',
    'appium:avd': 'pixel2',
    'appium:platformVersion': '10',
    'appium:avdLaunchTimeout': 120000,
    'appium:avdReadyTimeout': 120000,
    'appium:uiautomator2ServerInstallTimeout': 120000,
    'appium:appWaitForLaunch': true,
    'appium:ensureWebviewsHavePages': true,
    'appium:disableWindowAnimation': true,
    'appium:autoGrantPermissions': true,
    'appium:clearSystemFiles': true,
    'appium:nativeWebScreenshot': true
  }
}
2020-07-29T14:32:25.976Z DEBUG webdriver: request failed due to missing body
[0-0] 2020-07-29T14:32:25.967Z WARN webdriver: Request failed with status 404 due to The URL '/wd/hub/session' did not map to a valid resource
2020-07-29T14:32:25.971Z WARN webdriver: Request failed with status 404 due to The URL '/wd/hub/session' did not map to a valid resource
2020-07-29T14:32:25.976Z ERROR webdriver: Request failed with status 404 due to Error: The URL '/wd/hub/session' did not map to a valid resource
2020-07-29T14:32:25.976Z ERROR webdriver: Error: The URL '/wd/hub/session' did not map to a valid resource
    at getErrorFromResponseBody (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:114:12)
    at WebDriverRequest._request (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\request.js:149:56)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async startWebDriverSession (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:41:16)
    at async Function.newSession (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\index.js:44:23)
    at async remote (C:\Users\amrka\Desktop\wdExample\node_modules\webdriverio\build\index.js:75:20)
    at async C:\Users\amrka\Desktop\wdExample\node_modules\webdriverio\build\index.js:104:22
    at async Promise.all (index 1)
2020-07-29T14:32:26.082Z DEBUG @wdio/local-runner: Runner 0-0 finished with exit code 1
[0-0] FAILED in MultiRemote - C:\Users\amrka\Desktop\wdExample\test\specs\test.spec.js
2020-07-29T14:32:26.083Z INFO @wdio/cli:launcher: Run onComplete hook
2020-07-29T14:32:26.084Z INFO @wdio/selenium-standalone-service: shutting down all browsers
2020-07-29T14:32:26.085Z DEBUG @wdio/appium-service: Appium (pid: 7676) killed

Spec Files:      0 passed, 1 failed, 1 total (100% completed) in 00:00:03`

desculpe, atualizado:

exports.config = {
  specs: ['./test/specs/*.spec.js'],

  capabilities: {
    myChromeBrowser: {
      port: 4444,
      path: '/wd/hub'
      capabilities: {
        browserName: 'chrome',
        path: '/wd/hub'
      }
    },
    androidClient: {
      port: 4728,
      path: '/'
      capabilities: {
        path: '/'
        platformName: 'Android',
        browserName: 'chrome',
        'appium:deviceName': 'pixel2',
        'appium:avd': 'pixel2',
        'appium:platformVersion': '10',
        'appium:avdLaunchTimeout': 120000,
        'appium:avdReadyTimeout': 120000,
        'appium:uiautomator2ServerInstallTimeout' :120000,
        'appium:appWaitForLaunch': true,
        'appium:ensureWebviewsHavePages': true,
        'appium:disableWindowAnimation': true,
        'appium:autoGrantPermissions': true,
        'appium:clearSystemFiles': true,
        'appium:nativeWebScreenshot': true
      }
    }
  },
  // ...
}

@ christian-bromann

mesmo :(

Execution of 1 spec files started at 2020-07-29T14:37:21.501Z

2020-07-29T14:37:21.504Z DEBUG @wdio/utils:initialiseServices: initialise service "selenium-standalone" as NPM package
2020-07-29T14:37:21.508Z DEBUG @wdio/utils:initialiseServices: initialise service "appium" as NPM package
2020-07-29T14:37:21.509Z INFO @wdio/cli:launcher: Run onPrepare hook
2020-07-29T14:37:21.516Z DEBUG @wdio/appium-service: Will spawn Appium process: cmd /c appium --base-path / --debug-log-spacing --session-override --port 4728
2020-07-29T14:37:23.176Z DEBUG @wdio/appium-service: Appium started with ID: 13176
2020-07-29T14:37:23.471Z INFO @wdio/cli:launcher: Run onWorkerStart hook
2020-07-29T14:37:23.475Z INFO @wdio/local-runner: Start worker 0-0 with arg: wdio.conf.js
[0-0] 2020-07-29T14:37:24.017Z INFO @wdio/local-runner: Run worker command: run
[0-0] 2020-07-29T14:37:24.874Z DEBUG @wdio/local-runner:utils: init multiremote session
[0-0] 2020-07-29T14:37:24.877Z INFO webdriverio: Initiate new session using the ./protocol-stub protocol
[0-0] 2020-07-29T14:37:24.878Z INFO webdriverio: Initiate new session using the ./protocol-stub protocol
[0-0] RUNNING in MultiRemote - C:\Users\amrka\Desktop\wdExample\test\specs\test.spec.js
[0-0] 2020-07-29T14:37:24.904Z DEBUG @wdio/utils:initialiseServices: initialise service "selenium-standalone" as NPM package
2020-07-29T14:37:24.905Z DEBUG @wdio/utils:initialiseServices: initialise service "appium" as NPM package
[0-0] 2020-07-29T14:37:24.906Z DEBUG @wdio/local-runner:utils: init multiremote session
[0-0] 2020-07-29T14:37:24.907Z INFO webdriverio: Initiate new session using the webdriver protocol
2020-07-29T14:37:24.907Z INFO webdriverio: Initiate new session using the webdriver protocol
[0-0] 2020-07-29T14:37:24.908Z INFO webdriver: [POST] http://localhost:4444/session
[0-0] 2020-07-29T14:37:24.908Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: { browserName: 'chrome', path: '/wd/hub' },
    firstMatch: [ {} ]
  },
  desiredCapabilities: { browserName: 'chrome', path: '/wd/hub' }
}
[0-0] 2020-07-29T14:37:24.919Z INFO webdriver: [POST] http://localhost:4728/session
2020-07-29T14:37:24.920Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: {
      platformName: 'Android',
      browserName: 'chrome',
      'appium:deviceName': 'pixel2',
      'appium:avd': 'pixel2',
      'appium:platformVersion': '10',
      'appium:avdLaunchTimeout': 120000,
      'appium:avdReadyTimeout': 120000,
      'appium:uiautomator2ServerInstallTimeout': 120000,
      'appium:appWaitForLaunch': true,
      'appium:ensureWebviewsHavePages': true,
      'appium:disableWindowAnimation': true,
      'appium:autoGrantPermissions': true,
      'appium:clearSystemFiles': true,
      'appium:nativeWebScreenshot': true
    },
    firstMatch: [ {} ]
  },
  desiredCapabilities: {
    platformName: 'Android',
    browserName: 'chrome',
    'appium:deviceName': 'pixel2',
    'appium:avd': 'pixel2',
    'appium:platformVersion': '10',
    'appium:avdLaunchTimeout': 120000,
    'appium:avdReadyTimeout': 120000,
    'appium:uiautomator2ServerInstallTimeout': 120000,
    'appium:appWaitForLaunch': true,
    'appium:ensureWebviewsHavePages': true,
    'appium:disableWindowAnimation': true,
    'appium:autoGrantPermissions': true,
    'appium:clearSystemFiles': true,
    'appium:nativeWebScreenshot': true
  }
}
[0-0] 2020-07-29T14:37:24.963Z DEBUG webdriver: request failed due to missing body
[0-0] 2020-07-29T14:37:24.963Z ERROR webdriver: Request failed with status 404 due to Error: <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="/assets/displayhelpservlet.css" media="all"/>
  <link href="/assets/favicon.ico" rel="icon" type="image/x-icon" />
  <script src="/assets/jquery-3.1.1.min.js" type="text/javascript"></script>
  <script src="/assets/displayhelpservlet.js" type="text/javascript"></script>
  <script type="text/javascript">
    var json = Object.freeze('{"consoleLink": "\u002fwd\u002fhub","type": "Standalone","class": "org.openqa.grid.web.servlet.DisplayHelpHandler$DisplayHelpServletConfig","version": "3.141.59"}');
  </script>
</head>
<body>

<div id="content">
  <div id="help-heading">
    <h1><span id="logo"></span></h1>
    <h2>Selenium <span class="se-type"></span>&nbsp;v.<span class="se-version"></span></h2>
  </div>

  <div id="content-body">
    <p>
      Whoops! The URL specified routes to this help page.
    </p>
    <p>
      For more information about Selenium <span class="se-type"></span> please see the
      <a class="se-docs">docs</a> and/or visit the <a class="se-wiki">wiki</a>.
      <span id="console-item">
        Or perhaps you are looking for the Selenium <span class="se-type"></span> <a class="se-console">console</a>.
      </span>
    </p>
    <p>
      Happy Testing!
    </p>
  </div>

  <div>
    <footer id="help-footer">
      Selenium is made possible through the efforts of our open source community, contributions from
      these <a href="https://github.com/SeleniumHQ/selenium/blob/master/AUTHORS">people</a>, and our
      <a href="http://www.seleniumhq.org/sponsors/">sponsors</a>.
   </footer>
  </div>
 </div>

</body>
</html>
2020-07-29T14:37:24.963Z ERROR webdriver: Error: <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="/assets/displayhelpservlet.css" media="all"/>
  <link href="/assets/favicon.ico" rel="icon" type="image/x-icon" />
  <script src="/assets/jquery-3.1.1.min.js" type="text/javascript"></script>
  <script src="/assets/displayhelpservlet.js" type="text/javascript"></script>
  <script type="text/javascript">
    var json = Object.freeze('{"consoleLink": "\u002fwd\u002fhub","type": "Standalone","class": "org.openqa.grid.web.servlet.DisplayHelpHandler$DisplayHelpServletConfig","version": "3.141.59"}');
  </script>
</head>
<body>

<div id="content">
  <div id="help-heading">
    <h1><span id="logo"></span></h1>
    <h2>Selenium <span class="se-type"></span>&nbsp;v.<span class="se-version"></span></h2>
  </div>

  <div id="content-body">
    <p>
      Whoops! The URL specified routes to this help page.
    </p>
    <p>
      For more information about Selenium <span class="se-type"></span> please see the
      <a class="se-docs">docs</a> and/or visit the <a class="se-wiki">wiki</a>.
      <span id="console-item">
        Or perhaps you are looking for the Selenium <span class="se-type"></span> <a class="se-console">console</a>.
      </span>
    </p>
    <p>
      Happy Testing!
    </p>
  </div>

  <div>
    <footer id="help-footer">
      Selenium is made possible through the efforts of our open source community, contributions from
      these <a href="https://github.com/SeleniumHQ/selenium/blob/master/AUTHORS">people</a>, and our
      <a href="http://www.seleniumhq.org/sponsors/">sponsors</a>.
   </footer>
  </div>
 </div>

</body>
</html>
    at getErrorFromResponseBody (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:114:12)
    at WebDriverRequest._request (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\request.js:149:56)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async startWebDriverSession (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:41:16)
    at async Function.newSession (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\index.js:44:23)
    at async remote (C:\Users\amrka\Desktop\wdExample\node_modules\webdriverio\build\index.js:75:20)
    at async C:\Users\amrka\Desktop\wdExample\node_modules\webdriverio\build\index.js:104:22
    at async Promise.all (index 0)
    at async multiremote (C:\Users\amrka\Desktop\wdExample\node_modules\webdriverio\build\index.js:103:3)
    at async initialiseInstance (C:\Users\amrka\Desktop\wdExample\node_modules\@wdio\runner\build\utils.js:81:19)
[0-0]  Error:  Failed to create session.
It seems you are running a Selenium Standalone server and point to a wrong path. Please set `path: '/wd/hub'` in your wdio.conf.js!
[0-0] 2020-07-29T14:37:24.963Z ERROR @wdio/runner: Error: Failed to create session.
It seems you are running a Selenium Standalone server and point to a wrong path. Please set `path: '/wd/hub'` in your wdio.conf.js!
    at startWebDriverSession (C:\Users\amrka\Desktop\wdExample\node_modules\webdriver\build\utils.js:45:11)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
2020-07-29T14:37:25.079Z DEBUG @wdio/local-runner: Runner 0-0 finished with exit code 1
[0-0] FAILED in MultiRemote - C:\Users\amrka\Desktop\wdExample\test\specs\test.spec.js
2020-07-29T14:37:25.081Z INFO @wdio/cli:launcher: Run onComplete hook
2020-07-29T14:37:25.081Z INFO @wdio/selenium-standalone-service: shutting down all browsers
2020-07-29T14:37:25.089Z DEBUG @wdio/appium-service: Appium (pid: 18268) killed

Spec Files:      0 passed, 1 failed, 1 total (100% completed) in 00:00:03

@ christian-bromann
há mais alguma coisa que eu deva tentar?

Pessoal este tíquete foi fechado, porém todas as soluções fornecidas acima deram o mesmo erro

@ Amrkamel1 qualquer ajuda sobre isso seria apreciada!

@ Amrkamel1 Acho que você não deve misturar 2 serviços no mesmo wdio.conf.js . Portanto, eu desaconselho o código abaixo

services: [
  ['selenium-standalone', {
      args: {
        seleniumArgs: ['-port', '4444']
      },
  }],  
  ['appium',{
    command : 'appium',
    args: {
        debugLogSpacing: true,
        sessionOverride: true,
        port: 4723,

    },
    // args: ['-p','4722', '--relaxed-security', '--log-level', 'info:info']
  }]
],

O que normalmente fazemos é uma das abordagens abaixo:

  • Use wdio.conf.js para cada serviço
  • Use uma base wdio.conf.js e troque o serviço dinamicamente usando a variável de ambiente ou o argumento CLI

@ Amrkamel1 Acho que você não deve misturar 2 serviços no mesmo wdio.conf.js . Portanto, eu desaconselho o código abaixo

services: [
  ['selenium-standalone', {
      args: {
        seleniumArgs: ['-port', '4444']
      },
  }],  
  ['appium',{
    command : 'appium',
    args: {
        debugLogSpacing: true,
        sessionOverride: true,
        port: 4723,

    },
    // args: ['-p','4722', '--relaxed-security', '--log-level', 'info:info']
  }]
],

O que normalmente fazemos é uma das abordagens abaixo:

  • Use wdio.conf.js para cada serviço
  • Use uma base wdio.conf.js e troque o serviço dinamicamente usando a variável de ambiente ou o argumento CLI

Você pode explicar melhor como posso alternar dinamicamente entre os serviços no mesmo arquivo de especificações

Como passei muito tempo, não encontrei informações adequadas para este caso

Digamos que tenha que fazer um arquivo conf.js para o appium para iniciar o aplicativo móvel e outro conf.js para o serviço selenium

Então, como posso fazer um caso de teste simples que tem dois métodos, primeiro um clicará em um elemento no navegador e o segundo método clicará em um elemento no aplicativo móvel dentro do mesmo bloco

Parece errado, tenho certeza de que wdio e Selenium / Appium não suportariam esse caso de uso. Há um motivo para executarmos o teste para cada capabilities , então como você poderia iniciar dois recursos ao mesmo tempo para um teste?

Acho que o que você está tentando fazer é criar um efeito colateral no navegador que é necessário para a ação subsequente no aplicativo móvel. Nesse caso, devemos apenas provisionar o efeito colateral em before hook usando a chamada de API, em vez de iniciar o navegador para fazer algo que afetará o aplicativo móvel.

Eu não vi o caso de uso que você mencionou, então corrija-me se eu estiver errado e explique por que você precisa misturar navegador e aplicativo em um único caso de teste?

Parece errado, tenho certeza de que wdio e Selenium / Appium não suportariam esse caso de uso. Há um motivo para executarmos o teste para cada capabilities , então como você poderia iniciar dois recursos ao mesmo tempo para um teste?

Acho que o que você está tentando fazer é criar um efeito colateral no navegador que é necessário para a ação subsequente no aplicativo móvel. Nesse caso, devemos apenas provisionar o efeito colateral em before hook usando a chamada de API, em vez de iniciar o navegador para fazer algo que afetará o aplicativo móvel.

Eu não vi o caso de uso que você mencionou, então corrija-me se eu estiver errado e explique por que você precisa misturar navegador e aplicativo em um único caso de teste?

Definitivamente, isso faz sentido

Mas, por exemplo, quando você está usando java com TestNg, você pode manipular os limites e encerrar o driver e iniciar outro nos ganchos de teste

Por exemplo, você executa alguma ação no aplicativo móvel e deseja confirmar se as alterações refletem no aplicativo da web, sendo capaz de gerenciar isso usando o framework de teste com java

Mas desde que comecei a usar o wdio recentemente, tento demonstrar todos os recursos e truques que fui capaz de executar usando o teste

Também tenho um caso de uso que estava usando em meu projeto atual que deveria abrir o navegador Chrome em um dispositivo móvel e navegar até o aplicativo da web da Playstore, em seguida, pesquisar por pacote de aplicativo para um aplicativo específico e fazer o download

Depois disso, inicie o aplicativo baixado encerrando a primeira sessão e inicie a segunda com os recursos do aplicativo.

Meu ponto é que esse tipo de felixibilidade dá um bom crédito pela ferramenta, pois há casos reais em que você precisa usar o aplicativo da web e o aplicativo móvel também

Acho que você está misturando a automação do navegador, que pode ser facilmente feita pelo titereiro, e o wdio, que é um framework de teste e2e JavaScript completo. Não usamos estrutura de teste para tarefas de automação. Então, você concorda que devemos encerrar este problema porque não é suporte smth wdio e não é um bug do wdio?

Acho que você está misturando a automação do navegador, que pode ser facilmente feita pelo titereiro, e o wdio, que é um framework de teste e2e JavaScript completo. Não usamos estrutura de teste para tarefas de automação. Então, você concorda que devemos encerrar este problema porque não é suporte smth wdio e não é um bug do wdio?

Para ser mais preciso, estou misturando navegador de desktop com celular ou navegador Chrome em aplicativo móvel com aplicativo móvel

Se este recurso não for compatível e não houver planos de suporte no futuro, acho que você deve fechá-lo

Tenho certeza de que selenium-standalone não tem nada a ver com navegador dentro de um aplicativo ou emulador, ele funciona apenas com drivers de navegador em PCs e Macs. Não sou o proprietário do tópico, nem o mantenedor principal, então não posso encerrar o problema, mas acho que isso não é um bug ou mesmo uma solicitação de recurso, simplesmente não é a maneira selenium-standalone funciona IMHO.
https://www.selenium.dev/downloads/

Tenho certeza de que selenium-standalone não tem nada a ver com navegador dentro de um aplicativo ou emulador, ele funciona apenas com drivers de navegador em PCs e Macs. Não sou o proprietário do tópico, nem o mantenedor principal, então não posso encerrar o problema, mas acho que isso não é um bug ou mesmo uma solicitação de recurso, simplesmente não é a maneira selenium-standalone funciona IMHO.
https://www.selenium.dev/downloads/

talvez não seja um bug, mas é uma desvantagem, pois não suporta o teste cruzado de serviços, especialmente com o aplicativo móvel, uma vez que a maioria dos aplicativos móveis estão vinculados ao aplicativo web e a verificação cruzada é necessária. Isso pode ser feito por selênio e cliente Java com a estrutura de teste, mas parece não ser suportado por wdio

talvez fosse bom se houvesse uma maneira de substituir os limites na configuração do wdio, mas encerrar automaticamente o driver e iniciar um novo com os limites desejados dentro do arquivo de especificações

Eu acho que é um bug. O WebdriverIO deve permitir que você execute testes de navegador e testes móveis em um pacote ao mesmo tempo. Digamos que você queira executar testes da web em desktops e dispositivos móveis, você precisaria do Appium e do Selenium Standalone para ter a configuração correta dos drivers.

Tentei com a seguinte configuração:

    capabilities: [{
        port: 4446,
        browserName: 'chrome',
        acceptInsecureCerts: true
    }, {
        port: 4445,
        browserName: 'firefox',
        acceptInsecureCerts: true
    }],
    services: [
        ['chromedriver', {
            port: 4446
        }],
        ['selenium-standalone', {
            args: {
                seleniumArgs: ['-port', '4445']
            },
        }]
    ],

e vi os dois navegadores começando com os drivers certos:

2020-08-27T13:31:30.743Z INFO webdriver: [POST] http://localhost:4446/session
2020-08-27T13:31:30.743Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: { browserName: 'chrome', acceptInsecureCerts: true },
    firstMatch: [ {} ]
  },
  desiredCapabilities: { browserName: 'chrome', acceptInsecureCerts: true }
}
...
2020-08-27T13:31:30.748Z INFO webdriver: [POST] http://localhost:4445/wd/hub/session
2020-08-27T13:31:30.748Z INFO webdriver: DATA {
  capabilities: {
    alwaysMatch: {
      browserName: 'firefox',
      acceptInsecureCerts: true,
      'moz:firefoxOptions': [Object]
    },
    firstMatch: [ {} ]
  },
  desiredCapabilities: {
    browserName: 'firefox',
    acceptInsecureCerts: true,
    'moz:firefoxOptions': { args: [Array] }
  }
}

então eu verifiquei com wdio-chromedriver-service e @wdio/selenium-standalone-service e esta combinação em multiremote funciona:

    capabilities: {
        myChromeBrowser: {
            port: 4446,
            path: '/',
            capabilities: {
                browserName: 'chrome',
                acceptInsecureCerts: true
            }
        },
        myFFBrowser: {
            port: 4445,
            capabilities: {
                browserName: 'firefox',
                acceptInsecureCerts: true
            }
        }
    },
    services: [
        ['chromedriver', {
            port: 4446
        }],
        ['selenium-standalone', {
            args: {
                seleniumArgs: ['-port', '4445']
            },
        }]
    ],

@ Amrkamel1 meu palpite é que não atualizamos adequadamente os recursos de multirremote no serviço Appium . Você poderia ajudar e ajustar essa área nos node_modules para ver qual mudança precisa ser aplicada?

@ christian-bromann
Ok, vou tentar voltar para você

O teste mostra um comportamento correto.

O teste mostra um comportamento correto.

Parece ótimo, vou tentar este boné que você postou e avisarei quando voltar das férias (na próxima semana), já que não tenho acesso a nenhum laptop agora

Aproveite suas férias!

@ christian-bromann

Eu tentei o seguinte, e ainda não consegui fazer funcionar

`` `
capacidades: {
myChromeBrowser: {
porta: 4446,
caminho: '/',
capacidades: {
browserName: 'chrome',
acceptInsecureCerts: true
}
},
androidClient: {
porta: 4728,
caminho: '/',
capacidades: {
nome da plataforma: 'Android',
browserName: 'chrome',
' appium: deviceName ': 'pixel2',
' appium: avd ': 'pixel2',
' appium: platformVersion ': '10',
' appium: avdLaunchTimeout ': 120000,
' appium: avdReadyTimeout ': 120000,
' appium: uiautomator2ServerInstallTimeout ': 120000,
' appium: appWaitForLaunch ': true,
' appium: garantirWebviewsHavePages ': true,
' appium: disableWindowAnimation ': true,
' appium: autoGrantPermissions ': true,
' appium: clearSystemFiles ': true,
' appium: nativeWebScreenshot ': true,
}
}
},

Serviços: [
['autônomo de selênio', {
args: {
seleniumArgs: ['-port', '4444']
},
}],
['appium', {
comando: 'appium',
args: {
debugLogSpacing: true,
sessionOverride: true,
porta: 4728,
},
}]
]
`` `,

   `Execution of 1 spec files started at 2020-09-01T09:15:50.455Z

2020-09-01T09: 15: 50.458Z DEBUG @ wdio / utils: initialiseServices : serviço de inicialização "selenium-standalone" como pacote NPM
2020-09-01T09: 15: 50.465Z DEBUG @ wdio / utils: initialiseServices : inicializar serviço "appium" como pacote NPM
2020-09-01T09: 15: 50.468Z INFO @ wdio / cli: launcher : Run onPrepare hook
2020-09-01T09: 15: 50.478Z DEBUG @ wdio / appium-service: Irá gerar o processo Appium: cmd / c appium --base-path / --debug-log-spacing --session-override --port 4728
2020-09-01T09: 15: 51.798Z DEBUG @ wdio / appium-service: Appium iniciado com ID: 22764
2020-09-01T09: 15: 52.755Z INFO @ wdio / cli: launcher : Run onWorkerStart hook
2020-09-01T09: 15: 52.760Z INFO @ wdio / local-runner: Inicie o trabalhador 0-0 com arg: wdio.conf.js
[0-0] 2020-09-01T09: 15: 53.323Z INFO @ wdio / local-runner: Executar comando do trabalhador: executar
[0-0] 2020-09-01T09: 15: 54.215Z DEBUG @ wdio / local- runner: utils : init multiremote session
[0-0] 2020-09-01T09: 15: 54.218Z INFO webdriverio: Inicie uma nova sessão usando o protocolo ./protocol-stub
[0-0] 2020-09-01T09: 15: 54.218Z INFO webdriverio: Inicie uma nova sessão usando o protocolo ./protocol-stub
[0-0] EXECUTANDO em MultiRemote - C: \ Usuários \ amrka \ Desktop \ wdExampletest \ specstest.spec.js
[0-0] 2020-09-01T09: 15: 54.246Z DEBUG @ wdio / utils: initialiseServices : serviço de inicialização "selenium-standalone" como pacote NPM
2020-09-01T09: 15: 54.247Z DEBUG @ wdio / utils: initialiseServices : inicializar serviço "appium" como pacote NPM
[0-0] 2020-09-01T09: 15: 54.248Z DEBUG @ wdio / local- runner: utils : init multiremote session
[0-0] 2020-09-01T09: 15: 54.248Z INFO webdriverio: iniciar nova sessão usando o protocolo webdriver
2020-09-01T09: 15: 54.249Z INFO webdriverio: Inicie uma nova sessão usando o protocolo do webdriver
[0-0] 2020-09-01T09: 15: 54.251Z INFO webdriver: [POST] http: // localhost : 4446 / session
[0-0] 2020-09-01T09: 15: 54.251Z INFO webdriver: DATA {
capacidades: {
alwaysMatch: {browserName: 'chrome', acceptInsecureCerts: true},
firstMatch: [{}]
},
requiredCapabilities: {browserName: 'chrome', acceptInsecureCerts: true}
}
2020-09-01T09: 15: 54.257Z INFO webdriver: [POST] http: // localhost : 4728 / session
2020-09-01T09: 15: 54.257Z INFO webdriver: DATA {
capacidades: {
alwaysMatch: {
nome da plataforma: 'Android',
browserName: 'chrome',
' appium: deviceName ': 'pixel2',
' appium: avd ': 'pixel2',
' appium: platformVersion ': '10',
' appium: avdLaunchTimeout ': 120000,
' appium: avdReadyTimeout ': 120000,
' appium: uiautomator2ServerInstallTimeout ': 120000,
' appium: appWaitForLaunch ': true,
' appium: garantirWebviewsHavePages ': true,
' appium: disableWindowAnimation ': true,
' appium: autoGrantPermissions ': true,
' appium: clearSystemFiles ': true,
' appium: nativeWebScreenshot ': true
},
firstMatch: [{}]
},
desejadoCapacidades: {
nome da plataforma: 'Android',
browserName: 'chrome',
' appium: deviceName ': 'pixel2',
' appium: avd ': 'pixel2',
' appium: platformVersion ': '10',
' appium: avdLaunchTimeout ': 120000,
' appium: avdReadyTimeout ': 120000,
' appium: uiautomator2ServerInstallTimeout ': 120000,
' appium: appWaitForLaunch ': true,
' appium: garantirWebviewsHavePages ': true,
' appium: disableWindowAnimation ': true,
' appium: autoGrantPermissions ': true,
' appium: clearSystemFiles ': true,
' appium: nativeWebScreenshot ': true
}
}
[0-0] 2020-09-01T09: 15: 56.299Z ERROR webdriver: RequestError: conectar ECONNREFUSED 127.0.0.1:4446
em ClientRequest.(C: \ Users \ amrka \ Desktop \ wdExamplenode_modules \ got \ dist \ source \ coreindex.js: 890: 25)
em Object.onceWrapper (events.js: 422: 26)
em ClientRequest.emit (events.js: 327: 22)
em ClientRequest.EventEmitter.emit (domain.js: 482: 12)
em ClientRequest.origin.emit (C: \ Users \ amrka \ Desktop \ wdExamplenode_modules \ @szmarczak \ http-timer \ dist \ sourceindex.js: 39: 20)
em Socket.socketErrorListener (_http_client.js: 426: 9)
em Socket.emit (events.js: 315: 20)
em Socket.EventEmitter.emit (domain.js: 482: 12)
em emitErrorNT (internal / streams / destroy.js: 92: 8)
em emitErrorAndCloseNT (internal / streams / destroy.js: 60: 3)
em TCPConnectWrap.afterConnect [as oncomplete] (net.js: 1141: 16)
[0-0] Erro: Falha ao criar sessão.
Incapaz de conectar-se a " http: // localhost : 4446 /", certifique-se de que o driver do navegador esteja sendo executado nesse endereço.
Se você usar serviços como o chromedriver, consulte os logs de initialiseServices acima ou no arquivo wdio.log, pois o serviço pode ter problemas para iniciar o driver.
[0-0] 2020-09-01T09: 15: 56.300Z ERROR @ wdio / runner: Erro: Falha ao criar sessão.
Incapaz de conectar-se a " http: // localhost : 4446 /", certifique-se de que o driver do navegador esteja sendo executado nesse endereço.
Se você usar serviços como o chromedriver, consulte os logs de initialiseServices acima ou no arquivo wdio.log, pois o serviço pode ter problemas para iniciar o driver.
em startWebDriverSession (C: \ Users \ amrka \ Desktop \ wdExamplenode_modules \ webdriver \ build \ utils.js: 45: 11)
em processTicksAndRejections (internal / process / task_queues.js: 97: 5)
2020-09-01T09: 15: 56.414Z DEBUG @ wdio / local-runner: Runner 0-0 concluído com o código de saída 1
[0-0] FALHOU em MultiRemote - C: \ Usuários \ amrka \ Desktop \ wdExampletest \ specstest.spec.js
2020-09-01T09: 15: 56.416Z INFO @ wdio / cli: launcher : Executar gancho onComplete
2020-09-01T09: 15: 56.417Z INFO @ wdio / selenium-standalone-service: fechando todos os navegadores
2020-09-01T09: 15: 56.418Z DEBUG @ wdio / appium-service: Appium (pid: 11524) morto »

@ christian-bromann

Boas notícias!! : D
está funcionando agora com a configuração abaixo.

`  capabilities: {
myChromeBrowser: {
  port: 4444,
  path: '/wd/hub',
  capabilities: {
      browserName: 'chrome',
      acceptInsecureCerts: true
  }
},
androidClient: {
  port: 4728,
  path: '/',
  capabilities: {
    platformName: 'Android',
    browserName: 'chrome',
    'appium:deviceName': 'pixel2',
    'appium:avd': 'pixel2',
    'appium:platformVersion': '10',
    'appium:avdLaunchTimeout': 120000,
    'appium:avdReadyTimeout': 120000,
    'appium:uiautomator2ServerInstallTimeout' :120000,
    'appium:appWaitForLaunch': true,
    'appium:ensureWebviewsHavePages': true,
    'appium:disableWindowAnimation': true,
    'appium:autoGrantPermissions': true,
    'appium:clearSystemFiles': true,
    'appium:nativeWebScreenshot': true,
  }
  }
       },
        services: [
      ['selenium-standalone', {
         args: {
           seleniumArgs: ['-port', '4444']
         },
     }],  
     ['appium',{
       command : 'appium',
       args: {
           debugLogSpacing: true,
           sessionOverride: true,
           port: 4728,
       },
     }]
   ],`

Nota:
Eu atualizei todo o pacote json para o mais recente

2020-09-02_10h19_18

apenas um detalhe menor na captura de tela não é mostrado o tipo de navegador, acho que talvez porque estamos combinando dois navegadores diferentes dentro de uma especificação

image

Sim, esta é uma história diferente. Ainda bem que funciona agora.

Esta página foi útil?
0 / 5 - 0 avaliações