Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

PHP client for Selenium/WebDriver protocol. Previously facebook/php-webdriver

License

NotificationsYou must be signed in to change notification settings

php-webdriver/php-webdriver

Repository files navigation

Latest stable versionGitHub Actions build statusSauceLabs test statusTotal downloads

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, 3.x and 4.x.

The library supports modernW3C WebDriver protocol, as wellas legacyJsonWireProtocol.

The concepts of this library are very similar to the "official" Java, JavaScript, .NET, Python and Ruby librarieswhich are developed as part of theSelenium project.

Installation

Installation is possible usingComposer.

If you don't already use Composer, you can download thecomposer.phar binary:

curl -sS https://getcomposer.org/installer | php

Then install the library:

php composer.phar require php-webdriver/webdriver

Upgrade from version <1.8.0

Starting from version 1.8.0, the project has been renamed fromfacebook/php-webdriver tophp-webdriver/webdriver.

In order to receive the new version and future updates,you need to rename it in your composer.json:

"require": {-    "facebook/webdriver": "(version you use)",+    "php-webdriver/webdriver": "(version you use)",}

and runcomposer update.

Getting started

1. Start server (aka. remote end)

To control a browser, you need to start aremote end (server), which will listen to the commands sentfrom this library and will execute them in the respective browser.

This could be Selenium standalone server, but for local development, you can send them directly to so-called "browser driver" like Chromedriver or Geckodriver.

a) Chromedriver

📙 Below you will find a simple example. Make sure to read our wiki formore information on Chrome/Chromedriver.

Install the latest Chrome andChromedriver.Make sure to have a compatible version of Chromedriver and Chrome!

Runchromedriver binary, you can passport argument, so that it listens on port 4444:

chromedriver --port=4444

b) Geckodriver

📙 Below you will find a simple example. Make sure to read our wiki formore information on Firefox/Geckodriver.

Install the latest Firefox andGeckodriver.Make sure to have a compatible version of Geckodriver and Firefox!

Rungeckodriver binary (it start to listen on port 4444 by default):

geckodriver

c) Selenium standalone server

Selenium server can be useful when you need to execute multiple tests at once,when you run tests in several different browsers (like on your CI server), or when you need to distribute tests amongstseveral machines in grid mode (where one Selenium server acts as a hub, and others connect to it as nodes).

Selenium server then act like a proxy and takes care of distributing commands to the respective nodes.

The latest version can be found on theSelenium download page.

📙 You can findfurther Selenium server informationin our wiki.

d) Docker

Selenium server could also be started inside Docker container - seedocker-selenium project.

2. Create a Browser Session

When creating a browser session, be sure to pass the url of your running server.

For example:

// Chromedriver (if started using --port=4444 as above)$serverUrl ='http://localhost:4444';// Geckodriver$serverUrl ='http://localhost:4444';// selenium-server-standalone-#.jar (version 2.x or 3.x)$serverUrl ='http://localhost:4444/wd/hub';// selenium-server-standalone-#.jar (version 4.x)$serverUrl ='http://localhost:4444';

Now you can start browser of your choice:

useFacebook\WebDriver\Remote\RemoteWebDriver;// Chrome$driver = RemoteWebDriver::create($serverUrl, DesiredCapabilities::chrome());// Firefox$driver = RemoteWebDriver::create($serverUrl, DesiredCapabilities::firefox());// Microsoft Edge$driver = RemoteWebDriver::create($serverUrl, DesiredCapabilities::microsoftEdge());

3. Customize Desired Capabilities

Desired capabilities define properties of the browser you are about to start.

They can be customized:

useFacebook\WebDriver\Firefox\FirefoxOptions;useFacebook\WebDriver\Remote\DesiredCapabilities;$desiredCapabilities = DesiredCapabilities::firefox();// Disable accepting SSL certificates$desiredCapabilities->setCapability('acceptSslCerts',false);// Add arguments via FirefoxOptions to start headless firefox$firefoxOptions =newFirefoxOptions();$firefoxOptions->addArguments(['-headless']);$desiredCapabilities->setCapability(FirefoxOptions::CAPABILITY,$firefoxOptions);$driver = RemoteWebDriver::create($serverUrl,$desiredCapabilities);

Capabilities can also be used to📙 configure a proxy server which the browser should use.

To configure browser-specific capabilities, you may use📙 ChromeOptionsor📙 FirefoxOptions.

4. 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 outputecho'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();

Seeexample.php for full example scenario.Visit our GitHub wiki for📙 php-webdriver command reference and further examples.

NOTE: Above snippets are not intended to be a working example by simply copy-pasting. Seeexample.php for a working example.

Changelog

For latest changes seeCHANGELOG.md file.

More information

Some basic usage example is provided inexample.php file.

How-tos are provided right here in📙 our GitHub wiki.

If you don't use IDE, you may useAPI documentation of php-webdriver.

You may also want to check out the Selenium projectdocs andwiki.

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:

Support

We have a great community willing to help you!

❓ Do you have aquestion, idea or some general feedback? Visit ourDiscussions page.(Alternatively, you canlook for many answered questions also on StackOverflow).

🐛 Something isn't working, and you want toreport a bug?Submit it here as a new issue.

📙 Looking for ahow-to orreference documentation? Seeour wiki.

Contributing ❤️

We love to have your help to make php-webdriver better. SeeCONTRIBUTING.md for more information about contributing and developing php-webdriver.

Php-webdriver is community project - if you want to join the effort with maintaining and developing this library, the best is to look onissues marked with "help wanted"label. Let us know in the issue comments if you want to contribute and if you want any guidance, and we will be delighted to help you to prepare your pull request.

About

PHP client for Selenium/WebDriver protocol. Previously facebook/php-webdriver

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors96


[8]ページ先頭

©2009-2025 Movatter.jp