Environnement (veuillez compléter les informations suivantes) :
Configuration de WebdriverIO
Un exemple de la façon dont vous avez configuré WebdriverIO config
const path = require("path");
const isDebugMode = process.env.DEBUG === "true";
const chrome =
{
browserName: "chrome",
chromeOptions: {
args: ["--window-size=1366,768"]
}
};
var capabilities = [chrome];
if(process.env.RUNNING_IN_DOCKER)
{
capabilities =
[
{
browserName: "chrome",
chromeOptions: {
args: ["--headless", "--window-size=1366,768"]
}
}
// TO DO: Add headless Firefox see docker-compose.yml
];
} else if(process.env.ALL_BROWSERS)
{
capabilities =
[
chrome,
{
// set protected mode to the same value across all four zones in tools-> internet options -> security
// also make sure zoom level is 100%
browserName: "internet explorer"
}
];
}
exports.config = {
debug: isDebugMode,
execArgv: isDebugMode ? ['--inspect=9299'] : [],
sync: true,
maxInstances: 1,
//maxInstances: isDebugMode ? 1 : 10,
// Use selenium standalone server locally so we don't have a seperate selenium server in a seperate command prompt
// Use the selenium grid via docker on TC
services: process.env.RUNNING_IN_DOCKER ? [] : ["selenium-standalone"],
seleniumLogs: "./logs",
specs: [
"./features/**/*.feature"
],
exclude: [
"./features/**/topic-page.feature"
],
capabilities: capabilities,
logLevel: "verbose",
coloredLogs: true,
screenshotPath: "./errorShots/",
baseUrl: "https://*********/",
reporters: process.env.RUNNING_IN_DOCKER ? ["spec", "teamcity"] : ["spec"],
// Use BDD with Cucumber
framework: "cucumber",
cucumberOpts: {
compiler: ["js:babel-register"], // Babel so we can use ES6 in tests
require: [
"./steps/given.js",
"./steps/when.js",
"./steps/then.js"
],
tagExpression: "not @pending", // See https://docs.cucumber.io/tag-expressions/
timeout: 30000
},
// Set up global asssertion libraries
before: function before() {
const chai = require("chai");
global.expect = chai.expect;
global.assert = chai.assert;
global.should = chai.should();
},
}
Décrivez le bogue
Depuis la mise à jour de Chrome et de ChromeDriver, j'obtiens l'erreur suivante :
Error: Promise was rejected with the following reason: unknown command: Cannot call non W3C standard command while in W3C mode
at elementIdDisplayed("e88a07f5-2ca3-42ad-b458-3d66797b37f0") - isVisible.js:71:55
Si vous regardez les changements pour ChromeDriver 75.0.3770.8 http://chromedriver.chromium.org/downloads
vous verrez qu'il mentionne "Le changement le plus notable est que ChromeDriver s'exécute désormais en mode conforme à la norme W3C par défaut."
J'ai réussi à contourner ce problème en spécifiant w3c: false
dans ChromeOptions
mais je ne pense pas que ce soit la bonne approche. Il semblerait qu'il y ait quelque chose quelque part qui appelle une commande "non standard w3c" et je suppose que c'est quelque part dans webdriverio.
Reproduire
Configurez un environnement de test avec les détails ci-dessus et exécutez le test npm.
Comportement attendu
Les tests doivent s'exécuter sans l'erreur Cannot call non W3C standard command while in W3C mode
Ce n'est pas un problème avec chrome, mais un problème dans la façon dont vous spécifiez les options. Chrome 75 est par défaut conforme au W3C et vous devez définir W3C sur false pour pouvoir utiliser le JSONWP (comme mentionné dans les notes de version)
Essayez de fournir les options comme
'goog:chromeOptions': {
'w3c': false,
args: ["--headless", "--window-size=1366,768"]
},
Fermez ceci pour le moment car il s'agit d'un problème avec la façon dont vous définissez les options au lieu d'un problème avec WebdriverIO.
@wswebcreation Merci, vous avez raison. Pouvez-vous simplement m'indiquer les notes de version, je n'arrive pas à trouver où il est dit de définir W3C sur false.
Merci
@wswebcreation si je pouvais approuver votre commentaire 100 fois je le ferais.
Je viens de NightwatchJS et j'enquête sur cette erreur depuis 2 jours. J'essayais d'exécuter chromedriver sans tête dans un hub de sélénium dockerisé. L'ajout de cet extrait à mon fichier nightwatch.json
a fait l'affaire. Pour référence pour les autres, cette section de mon fichier ressemble maintenant à :
"chromeOptions": {
"w3c": false,
"args": [
"--no-sandbox",
"--headless",
"--window-size=1920x1080"
]
}
Commentaire le plus utile
Ce n'est pas un problème avec chrome, mais un problème dans la façon dont vous spécifiez les options. Chrome 75 est par défaut conforme au W3C et vous devez définir W3C sur false pour pouvoir utiliser le JSONWP (comme mentionné dans les notes de version)
Essayez de fournir les options comme
Fermez ceci pour le moment car il s'agit d'un problème avec la façon dont vous définissez les options au lieu d'un problème avec WebdriverIO.