How to control Chromedriver using curl

Here is how to use Chromedriver without libraries like selenium-webdriver. This can be useful for debugging.

The following example visits a web page and reads the a headline's text contents.

  1. Create a session:

    curl -XPOST http://localhost:9515/session -d '{"desiredCapabilities":{"browserName":"chrome"}}'
    

    You will get a JSON response containing lots of information about your Chrome session, including a sessionId. Use this to send any future commands to your chromedriver session.

    {"sessionId":"your-session-id-here","status":0,"value":{...}}
    

    You might want to pass options as into the chromeOptions capabilities e.g. --headless: '{"desiredCapabilities":{"browserName":"chrome", "chromeOptions":{"args":["--headless"]}}}'

  2. Visit a URL like this:

    curl http://localhost:9515/session/your-session-id-here/url -d '{"url":"http://example.com/"}'
    
    {"sessionId":"...","status":0,"value":null}
    
  3. Finding elements is fairly simple:

    curl http://localhost:9515/session/your-session-id-here/element -d '{"using":"tagName","value":"h1"}'
    
    {"sessionId":"...","status":0,"value":{"ELEMENT":"element-object-id-here"}}
    
  4. Read the element's text content by using the element's identifier received above:

    curl http://localhost:9515/session/your-session-id-here/element/element-object-id-here/text
    
    {"sessionId":"...","status":0,"value":"Example Domain"}
    
  5. To close Chrome, terminate your session:

    curl -XDELETE http://localhost:9515/session/your-session-id-here
    
    {"sessionId":"...","status":0,"value":null}
    

Chromedriver follows the W3C WebDriver spec. There are tons of things you can do with it, but performing more advanced tasks without a tool like selenium-webdriver can be quite difficult.
However, for simple debugging or remote-controlling, curl might be an adequate option.

Arne Hartherz About 6 years ago