Skip to content

Releases: itnelo/reactphp-webdriver

0.4.0

24 Feb 21:49
0.4.0
f2b3b8b
Compare
Choose a tag to compare

Added

  • ClientInterface::getSessionIdentifiers() implementation to get a list with WebDriver sessions from the active pool (as an opportunity to resume existing sessions).

Fixed

  • 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

11 Feb 09:10
0.3.0
ecba49b
Compare
Choose a tag to compare

Added

  • ClientInterface::removeSession() implementation to properly close a WebDriver session.
  • Configurable checkInterval for the WebDriverInterface::waitUntil() method, to define a custom frequency for the condition checks.
  • README: minimal configuration snippet.

Fixed

  • 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

22 Dec 06:31
0.2.1
4f4f347
Compare
Choose a tag to compare

Fixed

  • WebDriverInterface::waitUntil(): a resulting value from the promise, that has been generated by the "condition-to-satisfy" callback, is now properly forwarded to the onFulfilled handler, for the waitUntil method itself.

0.2.0

18 Dec 18:58
0.2.0
06b6f31
Compare
Choose a tag to compare

Added

  • ClientInterface::getTabIdentifiers() method implementation (reading a list of tabs, which are opened in the browser).
  • Implementations for the ClientInterface::getActiveTabIdentifier() and ClientInterface::setActiveTab() commands, to determine which of the tabs is currently "focused" and to open (focus) a specific one.
  • ClientInterface::openUri() and ClientInterface::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() and ClientInterface::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 a WebDriverInterface::saveScreenshot() shortcut implementation, to capture a screen state of the remote browser instance.
  • WebDriverInterface::wait() and WebDriverInterface::waitUntil() to make delays and conditional checks (waiting for element visibility, etc.).
  • README: a "Requirements" block, description improvements.

Changed

  • Timeout\Interceptor is now raising a single exception with both method-specific message and a timeout context.

Fixed

  • 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)

02 Dec 09:50
0.1.0
48126cc
Compare
Choose a tag to compare

Added

  • WebDriverInterface and low-level ClientInterface to communicate with Selenium Grid server asynchronously, using the centralized event loop and promise API.
  • SeleniumHubDriver and Client\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 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.