Search code examples
javaseleniumgoogle-chrome-devtoolsweb-inspectorchrome-devtools-protocol

Can Selenium WebDriver (java) interact with the Browser's inspect tool element selector?


By using selenium, can I access the browsers element picker (Ctrl + Shift + C, in the browser) that is located in the inspect tab?

I want to "point" to an element using that picker and have it be high lighted in the browser.

For example, something simple like:

WebElement elem = driver.findElement(By.id("userName")); elem.pointer();

and that would show the element as highlighted/selected in the browser, same was the inspect tab works. Example Image


Solution

  • Partially Yes. Using you will be able to interact with the API using the Java client soon.

    Integration of the Chrome DevTools Protocol is still in WIP (Work In Progress) and @AdiOhana have recently contributed for the Network and Performance domains for a better user facing API.

    In the discussion Controlling Chrome Devtools with Selenium Webdriver @AdiOhana mentions of the example usage as follows:

        driver.getDevTools().createSession();
        driver.getDevTools().send(new Command("Profiler.enable", ImmutableMap.of()));
        driver.getDevTools().send(new Command("Profiler.start", ImmutableMap.of()));
        //register to profiler events
        driver.getDevTools().addListener(new Event("Profiler.consoleProfileStarted", ConsoleProfileStarted.class), new Consumer<Object>() {
            @Override
            public void accept(Object o) {
                //do something
            }
        });
    

    Note: Until the Profiler domain will added to Selenium java client, you will have to supply your Mapper.


    Outro

    What is the difference between WebDriver and DevTool protocol