Public | Automated Build

Last pushed: a month ago
Short Description
PhantomJS 2 is a headless WebKit scriptable (browser) with a JavaScript API
Full Description

Docker container of PhantomJS is a headless WebKit browser, often used via WebDriver for web system testing:

  • Small: Using Debian image is 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).

Usage

JavaScript interactive shell

Start PhantomJS in REPL:

$ docker run --rm wernight/phantomjs
>

Remote WebDriver

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

$ docker run -d -p 8910:8910 wernight/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()
    

Feedbacks

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

Docker Pull Command
Owner
wernight
Source Repository

Comments (2)
platypus
a month ago

When I run the image with -it option, it works but displays me this:

docker run -it wernight/phantomjs /bin/bash
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
phantomjs@26c4bc8f720f:/$

platypus
a month ago

Hello wernight!

Thanks for this container. On my Synology NAS, the container starts but stops after few seconds.

Any idea why? Is it some ports problem? Or do I have to create the phantomjs user on my NAS?

Thanks for help.