Webdriverio: Tidak dapat memanggil perintah standar non W3C saat dalam mode W3C

Dibuat pada 10 Jun 2019  ·  3Komentar  ·  Sumber: webdriverio/webdriverio

Lingkungan (harap lengkapi informasi berikut):

  • Versi WebdriverIO: 4.14.4
  • Mode: WDIO Testrunner
  • Jika WDIO Testrunner, jalankan sync/async: sync
  • Versi Node.js: 10.15.0
  • Versi NPM: 6.4.1
  • Nama dan versi peramban: google-chrome-stable_75.0.3770.80-1
  • Nama dan versi platform: LINUX
  • ** "wdio-cucumber-framework": "^1.1.0", "wdio-selenium-standalone-service": "0.0.10",

Konfigurasi WebdriverIO
Contoh bagaimana Anda mengonfigurasi konfigurasi WebdriverIO

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();
    },
}

Jelaskan bugnya
Sejak memutakhirkan Chrome dan ChromeDriver saya mendapatkan kesalahan berikut:

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
Jika Anda melihat perubahan untuk ChromeDriver 75.0.3770.8 http://chromedriver.chromium.org/downloads
Anda akan melihatnya menyebutkan "Perubahan yang paling mencolok adalah ChromeDriver sekarang berjalan dalam mode sesuai standar W3C secara default."

Saya telah berhasil menyiasatinya dengan menentukan w3c: false di ChromeOptions namun saya rasa ini bukan pendekatan yang tepat. Tampaknya ada sesuatu di suatu tempat yang memanggil perintah "non w3c standard" dan saya berasumsi itu ada di suatu tempat di webdriverio.

Untuk Mereproduksi
Siapkan lingkungan pengujian dengan detail di atas dan jalankan pengujian npm.

Perilaku yang diharapkan
Pengujian harus berjalan tanpa kesalahan Cannot call non W3C standard command while in W3C mode

Komentar yang paling membantu

Ini bukan masalah dengan chrome, tetapi masalah bagaimana Anda menentukan opsi. Chrome 75 secara default sesuai dengan W3C dan Anda harus menyetel W3C ke false untuk dapat menggunakan JSONWP (sebagaimana disebutkan dalam catatan rilis)

Coba berikan opsi seperti

'goog:chromeOptions': {
        'w3c': false,
        args: ["--headless", "--window-size=1366,768"]
    },

Menutup ini untuk saat ini karena ini adalah masalah dengan cara Anda menentukan opsi alih-alih masalah dengan WebdriverIO.

Semua 3 komentar

Ini bukan masalah dengan chrome, tetapi masalah bagaimana Anda menentukan opsi. Chrome 75 secara default sesuai dengan W3C dan Anda harus menyetel W3C ke false untuk dapat menggunakan JSONWP (sebagaimana disebutkan dalam catatan rilis)

Coba berikan opsi seperti

'goog:chromeOptions': {
        'w3c': false,
        args: ["--headless", "--window-size=1366,768"]
    },

Menutup ini untuk saat ini karena ini adalah masalah dengan cara Anda menentukan opsi alih-alih masalah dengan WebdriverIO.

@wswebcreation Terima kasih Anda benar. Bisakah Anda mengarahkan saya ke catatan rilis yang sepertinya tidak dapat saya temukan di mana dikatakan untuk mengatur W3C ke false.

Terima kasih

@wswebcreation jika saya bisa mengacungkan komentar Anda 100 kali saya akan melakukannya.

Saya berasal dari NightwatchJS dan telah menyelidiki kesalahan ini selama 2 hari. Saya mencoba menjalankan chromedriver tanpa kepala di hub selenium dockerized. Menambahkan cuplikan itu ke file nightwatch.json saya berhasil. Untuk referensi untuk orang lain, bagian file saya itu sekarang terlihat seperti:

"chromeOptions": {
  "w3c": false,
  "args": [
    "--no-sandbox",
    "--headless",
    "--window-size=1920x1080"
  ]
}
Apakah halaman ini membantu?
0 / 5 - 0 peringkat