How to access chromedriver logs for Protractor test

后端 未结 7 1095
一整个雨季
一整个雨季 2021-02-15 16:42

I have seen that chromedriver can output a logfile (https://sites.google.com/a/chromium.org/chromedriver/logging)

This page shows how to set this up when executing the e

7条回答
  •  隐瞒了意图╮
    2021-02-15 17:22

    Since, the previous answer by @P.T. didn't work for me on Windows 7, I started with his suggestions and got it working on Windows. Here is a working solution for Windows 7 users.

    STEP 1: Install BASH and JQ and confirm they are working on your Windows box

    1. Download bash (for Windows 10 https://itsfoss.com/install-bash-on-windows/ ; for Windows 7 download latest here: https://sourceforge.net/projects/win-bash/files/shell-complete/latest/ ; for Windows Server 2012 or any Windows OS that already has Git installed on it, you already have a bash.exe and sh.exe installed at C:\Program Files\Git\usr\bin or C:\Program Files (x86)\Git\usr\bin already )
    2. Install bash - For Windows 7/ download it and extract the zip files to a directory.
    3. Download jq (https://stedolan.github.io/jq/) and install it in the same directory location as bash
    4. Make SURE that you add your above directory (for Windows 7- where you extracted the bash zip files to; for other applicable OSes that have git, the path it is installed at) to your PATH system environment variable.
    5. Once the above is installed and added to your PATH, close ALL and reopen Webstorm and any CMD windows you wish to run your work in.
    6. Test that bash is actually installed by simply typing it on a windows command prompt C:\git\> bash . Doing so should produce a bash cmd prompt like this bash$

    STEP 2: Add Custom Files for Redirecting Chromedriver to user Debug Logging

    Add the following files to the top level of the project (wherever your protractor-conf.js is located). These files allow us to add custom debug switches to the chromedriver.exe execution.

    Note that this is necessary because these switches are not exposed through protractor and cannot be done directly in the protractor.conf.js file via the chromeOptions/args flags as you would normally expect

    chromedriver.cmd -- exact source shown below:

    bash protractor-chromedriver.sh %*
    

    protractor-chromedriver.sh -- exact source shown below:

    TMPDIR="$(dirname $0)/tmp"
    NODE_MODULES="$(dirname $0)/node_modules"
    SELENIUM="${NODE_MODULES}/protractor/node_modules/webdriver-manager/selenium"
    UPDATECONFIG="${SELENIUM}/update-config.json"
    EXEFILENAME="$(cat ${UPDATECONFIG} | jq .chrome.last | tr -d '""')"
    CHROMEDRIVER="${SELENIUM}/${EXEFILENAME##*'\\'}"
    LOG="${TMPDIR}/chromedriver.$$.log"
    
    fatal() {
        # Dump to stderr because that seems reasonable
        echo >&2 "$0: ERROR: $*"
        # Dump to a logfile because webdriver redirects stderr to /dev/null (?!)
        echo >"${LOG}" "$0: ERROR: $*"
        exit 11
    }
    
    
    [ ! -x "$CHROMEDRIVER" ] && fatal "Cannot find chromedriver: $CHROMEDRIVER"
    
    exec "${CHROMEDRIVER}" --verbose --log-path="${LOG}" "$@"
    

    /tmp -- create this directory at the top level of your project (same as the location of the protractor.conf.js file.

    STEP 3: Update protractor.conf.js file.

    In the protractor.conf.js file, add the following line as a property in the exports.config object. As in:

    exports.config = {
    .. ..
            chromeDriver: 'chromedriver.cmd',
    .. ..
    

    STEP 4: Launch your tests

    your test should now run and if the chrome driver outputs any log information it will appear in a file called chromedriver.???.log in the tmp directory under your project.

    Important caveats

    This script set up assumes you install and run protractor (and the chrome driver under it) within the local node_modules directory inside your project. That is how I run my code, because I want it complete self-contained and re-generated in the build process/cycle. If you have protractor/chromedriver installed globally you should change the CHROMEDRIVER variable within the protractor-chromedriver.sh file to match your installation of protractor/chrome driver.

    hope that helps.

提交回复
热议问题