Skip to content
This repository has been archived by the owner on Apr 15, 2024. It is now read-only.

ideavateltd/docker-phantomjs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 

Repository files navigation

Supported tags and respective Dockerfile links

What is PhantomJS

PhantomJS is a headless WebKit browser, often used via WebDriver for web system testing. It's based on WebKit, runs JavaScript, and allows to take screenshots.

Features of this image

This Dockerized version of PhantomJS is:

  • Small: Using Debian image (below 100 MB, while Ubuntu is about 230 MB), and removing packages used during build.
  • Simple: Exposes default port, easy to extend.
  • Secure: Runs as non-root UID/GID 72379 (selected randomly to avoid mapping to an existing user) and uses dumb-init to reap zombie processes.

Usage

JavaScript interactive shell

Start PhantomJS in REPL:

$ docker run --rm ideavate/phantomjs
>

Remote WebDriver

Start as 'Remote WebDriver mode' (embedded GhostDriver):

$ docker run -d -p 8910:8910 ideavate/phantomjs phantomjs --webdriver=8910

To connect to it (some examples per language):

  • Java:

    WebDriver driver = new RemoteWebDriver(
        new URL("http://127.0.0.1:8910"),
        DesiredCapabilities.phantomjs());
    
  • Python (after running $ pip install selenium):

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    driver = webdriver.Remote(
        command_executor='http://127.0.0.1:8910',
        desired_capabilities=DesiredCapabilities.PHANTOMJS)
    
    driver.get('http://example.com')
    driver.find_element_by_css_selector('a[title="hello"]').click()
    
    driver.quit()
    

Feedback

Improvement ideas and pull requests are welcome via Github Issue Tracker.