Table of Contents
In this article, I will take you through the steps to install selenium webdriver library for PHP in 9 easy steps. Php-webdriver library is PHP language binding for Selenium WebDriver which allows you to control different web browsers like chrome, Firefox and Microsoft Edge from PHP. The concepts of this library are very similar to the "official" Java, JavaScript, .NET, Python and Ruby libraries which are developed as part of the Selenium project. Php-webdriver library supports modern W3C WebDriver protocol, as well as legacy JsonWireProtocol. This library is compatible with Selenium server version 2.x, 3.x and 4.x. You can check more on GitHub.
How to Install Selenium webdriver for PHP in 9 Easy Steps
Also Read: Step By Step to Install Selenium WebDriver for JavaScript
Step 1: Prerequisites
a) You should have a running Linux
(in our case, it is Ubuntu 20.04 LTS
) System.
b) You should have PHP
installed in your System.
c) You should have sudo
or root
access to run privileged commands.
d) You should have curl
utility available in your System.
Step 2: Install Composer
You can download and install composer in Linux based systems using below curl
command.
cyberithub@ubuntu:~$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer (version 2.4.3) successfully installed to: /home/cyberithub/composer.phar
Use it: php composer.phar
Step 3: Check Composer Version
After successful installation, you can verify the installed version by using php composer.phar --version
command as shown below.
cyberithub@ubuntu:~$ php composer.phar --version
Composer version 2.4.3 2022-10-14 16:56:41
Step 4: Install Libraries
Next step is to install Php-webdriver libraries by using php composer.phar require php-webdriver/webdriver
command as shown below.
cyberithub@ubuntu:~$ php composer.phar require php-webdriver/webdriver
Info from https://repo.packagist.org: #StandWithUkraine
Cannot use php-webdriver/webdriver's latest version 1.13.1 as it requires ext-curl * which is missing from your platform.
Using version ^1.1 for php-webdriver/webdriver
./composer.json has been created
Running composer update php-webdriver/webdriver
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking php-webdriver/webdriver (1.1.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Downloading php-webdriver/webdriver (1.1.1)
- Installing php-webdriver/webdriver (1.1.1): Extracting archive
1 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
No security vulnerability advisories found
Step 5: Install Chrome Webdriver
Although you can install webdriver of any browser you are planning to use, we are installing only chrome webdriver for demo purpose by using sudo apt install chromium-chromedriver
command as shown below.
cyberithub@ubuntu:~$ sudo apt install chromium-chromedriver Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: chromium-chromedriver 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 2,496 B of archives. After this operation, 77.8 kB of additional disk space will be used. Get:1 http://in.archive.ubuntu.com/ubuntu focal-updates/universe amd64 chromium-chromedriver amd64 1:85.0.4183.83-0ubuntu0.20.04.2 [2,496 B] Fetched 2,496 B in 1s (4,974 B/s) Selecting previously unselected package chromium-chromedriver. (Reading database ... 264860 files and directories currently installed.) Preparing to unpack .../chromium-chromedriver_1%3a85.0.4183.83-0ubuntu0.20.04.2_amd64.deb ... Unpacking chromium-chromedriver (1:85.0.4183.83-0ubuntu0.20.04.2) ... Setting up chromium-chromedriver (1:85.0.4183.83-0ubuntu0.20.04.2) ...
Step 6: Test Chrome Webdriver
After successful installation, you can start chromedriver by using sudo chromedriver
command as shown below. By default, it will run on Port 9515
as you can see below.
cyberithub@ubuntu:~$ sudo chromedriver mkdir: cannot create directory '/run/user/0': Permission denied Starting ChromeDriver 106.0.5249.119 (9f2101830b56fd2ea1408287f6c74e253ebcb7c6-refs/branch-heads/5249@{#797}) on port 9515 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully.
You can also run chrome webdriver on different port let's say on Port 4444
using sudo chromedriver --port=4444
command as shown below.
cyberithub@ubuntu:~$ sudo chromedriver --port=4444 mkdir: cannot create directory '/run/user/0': Permission denied Starting ChromeDriver 106.0.5249.119 (9f2101830b56fd2ea1408287f6c74e253ebcb7c6-refs/branch-heads/5249@{#797}) on port 4444 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully.
Step 7: Create Browser Session
You can create the browser session by passing the URL of your running server as shown below.
$serverUrl = 'http://localhost:4444';
Then you can start chrome browser as shown below:-
$driver = RemoteWebDriver::create($serverUrl, DesiredCapabilities::chrome());
Step 8: Customize Capabilities
Desired capabilities define properties of the browser you are about to start. You can customize different capabilities using below.
// Create an instance of ChromeOptions: $chromeOptions = new ChromeOptions(); // Configure $chromeOptions, see examples bellow: $chromeOptions->addArguments(...); // Create $capabilities and add configuration from ChromeOptions $capabilities = DesiredCapabilities::chrome(); $capabilities->setCapability(ChromeOptions::CAPABILITY_W3C, $chromeOptions); // Start the browser with $capabilities // A) When using RemoteWebDriver::create() $driver = RemoteWebDriver::create($serverUrl, $capabilities); // B) When using ChromeDriver::start to start local Chromedriver $driver = ChromeDriver::start($capabilities);
Step 9: Control Your Browser
You can visit GitHub and check all the different most used php-webdriver commands to control your browser.
// Go to URL $driver->get('https://en.wikipedia.org/wiki/Selenium_(software)'); // Find search element by its id, write 'PHP' inside and submit $driver->findElement(WebDriverBy::id('searchInput')) // find search input element ->sendKeys('PHP') // fill the search box ->submit(); // submit the whole form // Find element of 'History' item in menu by its css selector $historyButton = $driver->findElement( WebDriverBy::cssSelector('#ca-history a') ); // Read text of the element and print it to output echo 'About to click to a button with text: ' . $historyButton->getText(); // Click the element to navigate to revision history page $historyButton->click(); // Make sure to always call quit() at the end to terminate the browser session $driver->quit();