All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- No description yet.
0.4.0 - 2021-02-25
ClientInterface::getSessionIdentifiers()
implementation to get a list with WebDriver sessions from the active pool (as an opportunity to resume existing sessions).
- Missed type checks after WebDriver response deserialization for some methods (e.g. to prevent misreading an error array as a valid command output).
0.3.0 - 2021-02-11
ClientInterface::removeSession()
implementation to properly close a WebDriver session.- Configurable
checkInterval
for theWebDriverInterface::waitUntil()
method, to define a custom frequency for the condition checks. - README: minimal configuration snippet.
command.timeout
option now accepts both float and int values (will be normalized to float by the driver factory).onCommandConfirmation
hook is now propagates driver error message from the response alongside the predefined error label.
0.2.1 - 2020-12-22
WebDriverInterface::waitUntil()
: a resulting value from the promise, that has been generated by the "condition-to-satisfy" callback, is now properly forwarded to theonFulfilled
handler, for thewaitUntil
method itself.
0.2.0 - 2020-12-18
ClientInterface::getTabIdentifiers()
method implementation (reading a list of tabs, which are opened in the browser).- Implementations for the
ClientInterface::getActiveTabIdentifier()
andClientInterface::setActiveTab()
commands, to determine which of the tabs is currently "focused" and to open (focus) a specific one. ClientInterface::openUri()
andClientInterface::getCurrentUri()
implementations, to open a web page in the current browser tab and read an URI from the address bar.ClientInterface::getSource()
for acquiring source code of the web resource that is opened in the active (focused) browser tab (view-source action).ClientInterface::getElementIdentifier()
to get an internal WebDriver handle of the specific element on the page.ClientInterface::getActiveElementIdentifier()
to get an internal handle of the currently focused element.ClientInterface::getElementVisibility()
to check if the target is visible on the page.ClientInterface::mouseMove()
andClientInterface::mouseLeftClick()
to perform the most common mouse actions in the browser window.ClientInterface::keypressElement()
to send keyboard keys to the element on the page.ClientInterface::getScreenshot()
and aWebDriverInterface::saveScreenshot()
shortcut implementation, to capture a screen state of the remote browser instance.WebDriverInterface::wait()
andWebDriverInterface::waitUntil()
to make delays and conditional checks (waiting for element visibility, etc.).- README: a "Requirements" block, description improvements.
Timeout\Interceptor
is now raising a single exception with both method-specific message and a timeout context.
- Interface fixes and a minor redesign for some signatures.
This version brings an async variant for most methods (no tests yet), which were defined by the
WebDriverInterface
and ClientInterface
, to communicate with a remote Selenium WebDriver service in non-blocking
mode, except: getSessionIdentifiers
, removeSession
and clickElement
commands (the last one can be supplanted
by the mouseLeftClick
, in combination with the mouseMove
action).
At this moment, ClientInterface::createSession()
is able to send only a hardcoded set of capabilities (settings
for the executable file and profile preferences) to launch a browser instance (will be patched in the later versions):
{
"browserName": "chrome",
"goog:chromeOptions": {
"args": [
"--user-data-dir=\u002fopt\u002fgoogle\u002fchrome\u002fprofiles"
],
"prefs": {
"intl.accept_languages": "RU-ru,ru,en-US,en"
}
}
}
0.1.0 (core design) - 2020-12-02
WebDriverInterface
and low-levelClientInterface
to communicate with Selenium Grid server asynchronously, using the centralized event loop and promise API.SeleniumHubDriver
andClient\W3CClient
stubs for W3C compliant webdriver implementation.WebDriverFactory
as a shortcut for driver instantiation.Timeout\Interceptor
to prevent unresolved (hanging) driver promises, whenever it fails (using reactphp/promise-timer).ClientInterface::createSession()
method implementation (opening a Selenium hub session to interact with remote browser instance).
This early development version doesn't yet contain full implementation for the introduced WebDriverInterface
, only
core design solutions and library interfaces are defined.