Saya menggunakan Nightwatch, Selenium, dan Driver Chrome untuk melakukan pengujian UI otomatis. Terkadang ada kegagalan pengujian pada sejumlah lingkungan jarak jauh. Untuk men-debug kegagalan secara lokal, saya ingin browser tetap terbuka saat pengujian gagal.

Saya dulu dapat melakukan ini menggunakan pengaturan konfigurasi di nightwatch.json dan nightwatch.conf.js, tetapi saya kehilangan lembar contekan pengaturan konfigurasi saya karena kegagalan hard drive, dan meskipun upaya terbaik saya di google saya tidak bisa melakukannya menemukan kombinasi yang tepat lagi.

Jika saya ingat dengan benar, itu bukan jenis flag keepBrowserOpen: true apa pun. Jika ingatanku, itu adalah beberapa jenis batas waktu yang disetel ke angka tinggi yang konyol dikombinasikan dengan sesuatu yang lain seperti detachDriver. Saya telah memeriksa dokumentasi Selenium dengan fokus khusus pada Opsi Driver Chrome, dan daftar opsi Driver Chrome, tetapi saya belum menemukan kombinasi yang berfungsi.

Apa yang saya lewatkan?

Ini jam malam saya.json

{
    "output_folder": "tests/automation/reports",
    "end_session_on_fail": false,
    "test_settings": {
        "default": {
            "selenium_port": 4444,
            "screenshots": {
                "enabled": true,
                "path": "tests/automation/reports/screenshots"
            },
            "javascriptEnabled": true,
            "acceptSslCerts": true,
            "acceptInsecureCerts": true,
            "globals": {
                "waitForConditionTimeout": 10000
            }
        },
        "chrome": {
            "extends": "default",
            "desiredCapabilities": {
                "browserName": "chrome",
                "javascriptEnabled": true,
                "acceptSslCerts": true,
                "acceptInsecureCerts": true,
                "chromeOptions": {
                    "args": [
                        "--no-sandbox",
                        "--disable-gpu"
                    ]
                }
            }
        }
    }
}

Dan nightwatch.conf.js saya

const geckoDriver = require('geckodriver');
const chromeDriver = require('chromedriver');
const seleniumServer = require('selenium-server');

module.exports = (function (settings) {
    settings.selenium = {
        start_process: true,
        server_path: seleniumServer.path,
        log_path: 'tests/automation/reports/',
        host: 'localhost',
        port: 4444,
        cli_args: {
            'webdriver.chrome.driver': chromeDriver.path,
            'webdriver.gecko.driver': geckoDriver.path,
            'webdriver.edge.driver': 'C:\\windows\\system32\\MicrosoftWebDriver.exe',
            'webdriver.port': '4444'
        }
    };

    return settings;
})(require('./nightwatch.json'));

Versi Selenium adalah 2.35.1

0
Adam Konieska 11 Mei 2021, 21:17

1 menjawab

Jawaban Terbaik

Ini bukan solusi yang elegan tetapi dekat dengan apa yang Anda cari. Pada dasarnya, kita dapat memeriksa nilai browser.currentTest.results.errors di afterEach() dan jika nilainya lebih dari 0, maka kita dapat menjeda pengujian di sana, menjaga sesi browser tetap hidup.

afterEach: function(browser) {
    if(browser.currentTest.results.errors > 0) {
        browser.pause()
    }
2
Alapan Das 12 Mei 2021, 05:06