-
Notifications
You must be signed in to change notification settings - Fork 853
Description
This is an issue to plan and track progress of implementing W3C WebDriver protocol into php-webdriver.
Currently, only legacy JsonWire (aka OSS) protocol is supported by php-webdriver. Selenium server 3.x translates the protocol if needed for the remote end (browser). However not everything is translated (like actions()
), making some of the features not working with remote ends supporting only the W3C protocol (which is currently only GeckoDriver for Firefox 48+).
Since Selenium 3.5 the translation to old protocol is disabled by default. It still could be reenabled by starting the server like java -jar selenium-server-standalone-3.5.3.jar -enablePassThrough false
, but this is only partial and temporary solution/workaround.
For Docker 🐳 users: use SE_OPTS environment variable to pass the enablePassThrough option to Selenium server. Ie. add -e "SE_OPTS=-enablePassThrough false"
to docker run
command.
The work would require eg.:
- add some more functional tests, to make sure we don't breake the old protocol while doing the necessary refactoring
- prepare handshake to detect whether the remote end is speaking JsonWire or W3C dialect (we need this to support the old browsers etc.)
- define common interface for Json and W3C protocol
- convert current implementation to use this interface
- implement adapter for the W3C protocol
- implement GeckodriverService or something like that to start geckodriver locally
...
Resources
- JsonWireProtocol vs. W3C WebDriver
- ProtocolHandshake in java bindings
- Handshake and capabilities resolving in python bindings