{"id":13453593,"url":"https://github.com/casperjs/casperjs","last_synced_at":"2025-12-12T03:05:34.606Z","repository":{"id":1626526,"uuid":"2328523","full_name":"casperjs/casperjs","owner":"casperjs","description":"CasperJS is no longer actively maintained. Navigation scripting and testing utility for PhantomJS and SlimerJS","archived":true,"fork":false,"pushed_at":"2020-04-03T21:57:20.000Z","size":7757,"stargazers_count":7227,"open_issues_count":0,"forks_count":987,"subscribers_count":251,"default_branch":"master","last_synced_at":"2024-04-14T12:09:18.378Z","etag":null,"topics":["headless-browsers","headless-testing","javascript","phantomjs","slimerjs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/casperjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-09-05T14:01:40.000Z","updated_at":"2024-04-09T18:24:43.000Z","dependencies_parsed_at":"2022-08-06T11:00:14.152Z","dependency_job_id":null,"html_url":"https://github.com/casperjs/casperjs","commit_stats":null,"previous_names":["n1k0/casperjs"],"tags_count":60,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casperjs%2Fcasperjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casperjs%2Fcasperjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casperjs%2Fcasperjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casperjs%2Fcasperjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/casperjs","download_url":"https://codeload.github.com/casperjs/casperjs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235432244,"owners_count":18989483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["headless-browsers","headless-testing","javascript","phantomjs","slimerjs"],"created_at":"2024-07-31T08:00:43.983Z","updated_at":"2025-10-05T19:30:15.007Z","avatar_url":"https://github.com/casperjs.png","language":"JavaScript","readme":"# CasperJS\n\n[![Build Status](https://travis-ci.org/casperjs/casperjs.svg?branch=master)](https://travis-ci.org/casperjs/casperjs)\n\n\u003e**Important note:** the `master` branch hosts the development version of CasperJS, which is now pretty stable and should be the right version to use if you ask me. Users interested in a pretty stable, recent version working with PhantomJS 2.0 and newer should choose the packaged 1.1.0 and following releases.\n\u003e\n\u003e The [`1.0` branch](https://github.com/casperjs/casperjs/tree/1.0) is now obsolete. Please note that\n\u003e- it is only recommended if you need to keep old production tests running that could do with the now **unmaintained PhantomJS 1.9**\n\u003e- 1.0 tests unfortunately have to be run manually using the `casperjs selftest` command\n\u003e \n\u003e **Note that all versions up to and including 1.1-beta3 do not support PhantomJS 2.0 and newer.**\n\nThe complete documentation for the current releases is **hosted on [docs.casperjs.org](http://docs.casperjs.org/).**\n\nCasperJS is a navigation scripting \u0026 testing utility for [PhantomJS](http://www.phantomjs.org/)\nand [SlimerJS](http://slimerjs.org/) (still experimental).\nIt eases the process of defining a full navigation\nscenario and provides useful high-level functions, methods \u0026 syntactic sugar for doing common\ntasks such as:\n\n- defining \u0026 ordering [navigation steps](http://docs.casperjs.org/en/latest/quickstart.html)\n- [filling forms](http://docs.casperjs.org/en/latest/modules/casper.html#fill)\n- [clicking links](http://docs.casperjs.org/en/latest/modules/casper.html#click)\n- [capturing screenshots](http://docs.casperjs.org/en/latest/modules/casper.html#captureselector) of a page (or an area)\n- [making assertions on remote DOM](http://docs.casperjs.org/en/latest/modules/tester.html)\n- [logging](http://docs.casperjs.org/en/latest/logging.html) \u0026 [events](http://docs.casperjs.org/en/latest/events-filters.html)\n- [downloading](http://docs.casperjs.org/en/latest/modules/casper.html#download) resources, even binary ones\n- catching errors and react accordingly\n- writing [functional test suites](http://docs.casperjs.org/en/latest/testing.html), exporting results as JUnit XML (xUnit)\n\nBrowse the [sample examples repository](https://github.com/casperjs/casperjs/tree/master/samples).\nDon't hesitate to pull request for any cool example of yours as well!\n\n**Read the [full documentation](http://docs.casperjs.org/) on casperjs documentation website.**\n\nSubscribe to the [project mailing-list](https://groups.google.com/forum/#!forum/casperjs)\n\nFollow the CasperJS project [on twitter](https://twitter.com/casperjs_org) and [Google+](https://plus.google.com/b/106641872690063476159/).\n\n## Show me some code!\n\nFirst [install CasperJS](http://docs.casperjs.org/en/latest/installation.html), we'll use 1.1 beta here.\n\nSample test to see if some dropdown can be opened:\n\n```javascript\ncasper.test.begin('a twitter bootstrap dropdown can be opened', 2, function(test) {\n    casper.start('http://getbootstrap.com/2.3.2/javascript.html#dropdowns', function() {\n        test.assertExists('#navbar-example');\n        this.click('#dropdowns .nav-pills .dropdown:last-of-type a.dropdown-toggle');\n        this.waitUntilVisible('#dropdowns .nav-pills .open', function() {\n            test.pass('Dropdown is open');\n        });\n    }).run(function() {\n        test.done();\n    });\n});\n```\n\nRun the script:\n\n![](http://cl.ly/image/271e2i403A0F/Capture%20d%E2%80%99%C3%A9cran%202013-01-20%20%C3%A0%2009.26.15.png)\n\n## Support\n\n**Help request**. If you're stuck using CasperJS and don't understand how to achieve something, please [ask on the mailing-list](https://groups.google.com/forum/#!forum/casperjs) first. If the discussion reveals that you have found a real issue that might need a change within CasperJS, file an issue.\n\n**Filing issues**. It takes a lot of time to review, validate, and de-duplicate filed issues. This time could be spent better on actually improving on CasperJS. Filing an issue might be a helpful contribution, but we expect you to read our [CONTRIBUTING.md](https://github.com/casperjs/casperjs/blob/master/CONTRIBUTING.md) guidelines first. \n\n**Professional Support**. Need help with getting CasperJS up and running? Got a time-consuming problem you want to get solved quickly?\n\nTry to find someone to address your specific problem and [post a reward at bountysource](https://www.bountysource.com).\n\nIf you need to have a known issue resolved and don't have the time or skills to do it on your own, you could [post a reward for any open issue directly](https://www.bountysource.com/teams/casperjs/issues).\n\n## Contributing\n\n### Contributing code\n\nPlease read the [CONTRIBUTING.md](https://github.com/casperjs/casperjs/blob/master/CONTRIBUTING.md) file contents.\n\n### Contributing documentation\n\nCasperJS's documentation is written using the [Markdown format](http://daringfireball.net/projects/markdown/), and hosted on Github thanks to the [Github Pages Feature](http://pages.github.com/).\n\nTo view the source files on github, head to [the gh-pages branch](https://github.com/casperjs/casperjs/tree/gh-pages), and check the [documentation's README](https://github.com/casperjs/casperjs/tree/gh-pages#readme) for further instructions.\n\n## Team\n\n- Nicolas Perriault ([@n1k0](https://github.com/n1k0))\n- Nick Currier ([@hexid](https://github.com/hexid))\n- Laurent Jouanneau ([@laurentj](https://github.com/laurentj))\n- Mickaël Andrieu ([@mickaelandrieu](https://github.com/mickaelandrieu))\n- Matt DuVall ([@mduvall](https://github.com/mduvall))\n- Ryan Null ([@BIGjuevos](https://github.com/BIGjuevos))\n\n## License\n\nMIT\n","funding_links":[],"categories":["JavaScript","GUI Automation","测试框架","Testing Frameworks","Testing Frameworks [🔝](#readme)","Deprecated  (a-z↓)","Unit Testing","Nodejs","Browser automation"],"sub_categories":["Snippets Manager","框架","Runner","Browser-based Testing Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcasperjs%2Fcasperjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcasperjs%2Fcasperjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcasperjs%2Fcasperjs/lists"}