123 lines
6.0 KiB
Markdown
123 lines
6.0 KiB
Markdown
# php-webdriver – Selenium WebDriver bindings for PHP
|
||
|
||
[](https://packagist.org/packages/facebook/webdriver)
|
||
[](https://travis-ci.org/facebook/php-webdriver)
|
||
[](https://saucelabs.com/u/php-webdriver)
|
||
[](https://packagist.org/packages/facebook/webdriver)
|
||
[](https://packagist.org/packages/facebook/webdriver)
|
||
|
||
## Description
|
||
Php-webdriver library is PHP language binding for Selenium WebDriver, which allows you to control web browsers from PHP.
|
||
|
||
This library is compatible with Selenium server version 2.x and 3.x.
|
||
It implements the [JsonWireProtocol](https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol), which is currently supported
|
||
by the Selenium server and will also implement the [W3C WebDriver](https://w3c.github.io/webdriver/webdriver-spec.html) specification in the future.
|
||
|
||
The concepts of this library are very similar to the "official" Java, .NET, Python and Ruby bindings from the
|
||
[Selenium project](https://github.com/SeleniumHQ/selenium/).
|
||
|
||
**As of 2013, this PHP client has been rewritten from scratch.**
|
||
Using the old version? Check out [Adam Goucher's fork](https://github.com/Element-34/php-webdriver) of it.
|
||
|
||
Looking for API documentation of php-webdriver? See [https://facebook.github.io/php-webdriver/](https://facebook.github.io/php-webdriver/latest/)
|
||
|
||
Any complaints, questions, or ideas? Post them in the user group https://www.facebook.com/groups/phpwebdriver/.
|
||
|
||
## Installation
|
||
|
||
Installation is possible using [Composer](https://getcomposer.org/).
|
||
|
||
If you don't already use Composer, you can download the `composer.phar` binary:
|
||
|
||
curl -sS https://getcomposer.org/installer | php
|
||
|
||
Then install the library:
|
||
|
||
php composer.phar require facebook/webdriver
|
||
|
||
## Getting started
|
||
|
||
### Start Server
|
||
|
||
The required server is the `selenium-server-standalone-#.jar` file provided here: http://selenium-release.storage.googleapis.com/index.html
|
||
|
||
Download and run the server by replacing # with the current server version. Keep in mind **you must have Java 8+ installed to run this command**.
|
||
|
||
java -jar selenium-server-standalone-#.jar
|
||
|
||
**NOTE:** If using Firefox, see alternate command below.
|
||
|
||
### Create a Browser Session
|
||
|
||
When creating a browser session, be sure to pass the url of your running server.
|
||
|
||
```php
|
||
// This would be the url of the host running the server-standalone.jar
|
||
$host = 'http://localhost:4444/wd/hub'; // this is the default
|
||
```
|
||
|
||
##### Launch Chrome
|
||
|
||
Make sure to have latest Chrome and [Chromedriver](https://sites.google.com/a/chromium.org/chromedriver/downloads) versions installed.
|
||
|
||
```php
|
||
$driver = RemoteWebDriver::create($host, DesiredCapabilities::chrome());
|
||
```
|
||
|
||
##### Launch Firefox
|
||
|
||
Make sure to have latest Firefox and [Geckodriver](https://github.com/mozilla/geckodriver/releases) installed.
|
||
|
||
Because Firefox (and Geckodriver) only support the new W3C WebDriver protocol (which is yet to be implemented by php-webdriver - see [issue #469](https://github.com/facebook/php-webdriver/issues/469)),
|
||
the protocols must be translated by Selenium Server - this feature is *partially* available in Selenium Server versions 3.5.0-3.8.1 and you can enable it like this:
|
||
|
||
java -jar selenium-server-standalone-3.8.1.jar -enablePassThrough false
|
||
|
||
Now you can start Firefox from your code:
|
||
|
||
```php
|
||
$driver = RemoteWebDriver::create($host, DesiredCapabilities::firefox());
|
||
```
|
||
|
||
### Customize Desired Capabilities
|
||
|
||
```php
|
||
$desired_capabilities = DesiredCapabilities::firefox();
|
||
$desired_capabilities->setCapability('acceptSslCerts', false);
|
||
$driver = RemoteWebDriver::create($host, $desired_capabilities);
|
||
```
|
||
|
||
* See https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities for more details.
|
||
|
||
**NOTE:** Above snippets are not intended to be a working example by simply copy-pasting. See [example.php](example.php) for working example.
|
||
|
||
## Changelog
|
||
For latest changes see [CHANGELOG.md](CHANGELOG.md) file.
|
||
|
||
## More information
|
||
|
||
Some how-tos are provided right here in [our GitHub wiki](https://github.com/facebook/php-webdriver/wiki).
|
||
|
||
You may also want to check out the Selenium [docs](http://docs.seleniumhq.org/docs/) and [wiki](https://github.com/SeleniumHQ/selenium/wiki).
|
||
|
||
## Testing framework integration
|
||
|
||
To take advantage of automatized testing you may want to integrate php-webdriver to your testing framework.
|
||
There are some projects already providing this:
|
||
|
||
- [Steward](https://github.com/lmc-eu/steward) integrates php-webdriver directly to [PHPUnit](https://phpunit.de/), and provides parallelization
|
||
- [Codeception](http://codeception.com) testing framework provides BDD-layer on top of php-webdriver in its [WebDriver module](http://codeception.com/docs/modules/WebDriver)
|
||
- You can also check out this [blogpost](http://codeception.com/11-12-2013/working-with-phpunit-and-selenium-webdriver.html) + [demo project](https://github.com/DavertMik/php-webdriver-demo), describing simple [PHPUnit](https://phpunit.de/) integration
|
||
|
||
## Support
|
||
|
||
We have a great community willing to help you!
|
||
|
||
- **Via our Facebook Group** - If you have questions or are an active contributor consider joining our [facebook group](https://www.facebook.com/groups/phpwebdriver/) and contribute to communal discussion and support
|
||
- **Via StackOverflow** - You can also [ask a question](https://stackoverflow.com/questions/ask?tags=php+selenium-webdriver) or find many already answered question on StackOverflow
|
||
- **Via GitHub** - Another option if you have a question (or bug report) is to [submit it here](https://github.com/facebook/php-webdriver/issues/new) as an new issue
|
||
|
||
## Contributing
|
||
|
||
We love to have your help to make php-webdriver better. See [CONTRIBUTING.md](CONTRIBUTING.md) for more information about contributing and developing php-webdriver.
|