Skip to content

Releases: sbabcoc/Selenium-Foundation

Upgrade to Selenium 4.25.0

05 Nov 00:20
Compare
Choose a tag to compare

In this release, I upgraded Selenium to the latest release (version 4.25.0). This also includes the latest release of HtmlUnit-Remote.

For Selenium 4, switch from the deprecated CommandLine class to ProcessBuilder

04 Oct 06:06
Compare
Choose a tag to compare

The CommandLine class of the Selenium API has been deprecated, so I spent the effort to transition the Selenium 4 Grid and version-agnostic classes to the standard ProcessBuilder class. (My original intent was to replace CommandLine everywhere, but the output behavior of the Selenium 3 Grid servers is such that I couldn't get redirection to work.)

Remove custom capabilities to avoid relay "new session" issue

01 Oct 17:12
Compare
Choose a tag to compare

In this release, I resolved an issue with Appium support that caused the Selenium 4 Grid relay to mismatch requested capabilities in "new session" requests if they include nord:options extension capabilities that don't precisely match those specified in the relay configuration. This occurs if the grid configuration specifies running Appium under the pm2 process manager.

Refine slot matchers; fix README version updater

30 Sep 19:58
Compare
Choose a tag to compare

In this release, I updated the slot/capabilities matcher criteria for HtmlUnitDriver:

  • For Selenium 4, the platformName capability will be considered.
  • For Selenium 3, the browserVersion (a.k.a. - version) capability will be ignored.

I also updated the README file update patterns in build.gradle to match the Selenium 4 artifact names.

Upgrade and revisions to support Appium with Selenium 4

30 Sep 16:38
Compare
Choose a tag to compare

Upgrade to Selenium 4.23.0

15 Aug 17:16
Compare
Choose a tag to compare

In this release, I upgraded the Selenium 4 version to 4.23.0, which includes a fix to HtmlUnitDriver related to identification of hidden element. This allowed me to switch the unit tests target browser back to HtmlUnit.

Upgrade Selenium 4 to version 4.22.0; add remote HtmlUnitDriver support

14 Jul 22:54
Compare
Choose a tag to compare

The major focus of this release is to sync up with the latest Selenium 4 release. I've incorporated support for HtmlUnit Remote, which restores the ability to acquire HtmlUnitDriver session from Selenium Grid.

Also in this release:

  • I eliminated dependencies on Guava, which removes a potential source of dependency conflicts.
  • I upgraded to the latest release of Java-Utils, which adds a new findExecutableOnSystemPath function to the FileUtils class.

Resolve issue with JUnit 4 support

30 Mar 06:05
Compare
Choose a tag to compare

This release is primarily focused on resolving the issues that were causing the JUnit 4 support to fail. The issue appears to have been largely a matter of running with an outdated version of Byte Buddy in JUnit Foundation.

I also update README to indicate the addition of Selenium 4 support and the switch to the Gradle Wrapper for building, testing, and publishing releases.

Add Support for Selenium 4 API

08 Mar 03:57
Compare
Choose a tag to compare

In this release, I finally finished up the initial support for the Selenium 4 API. This required a bit of refactoring to account for differences in the Selenium API between version 3 and version 4.

  • I implemented automatic driver management for both Selenium 3 (via WebDriverManager) and Selenium 4 (via SeleniumManager).
  • I implemented support for Selenium 4 Grid.
  • I added servlet container classes for both Selenium 4 and Selenium 3.
  • I implemented an ExamplePageLauncher that uses this servlet container to host the unit test example pages.
  • I improved the factoring and implementation of the existing getNodeCapabilities() function.
  • I added settings to enable remote debugging of Hub and Node processes.
  • I added support for posting GraphQL queries.
  • I added a configuration method that reports the Selenium major version for API-specific client code.
  • I revised the extraction of log-based serialized JavaScript exceptions to eliminate the use of deprecated APIs.
  • I fixed some longstanding inaccuracies in my browser plugin capabilities declarations.
  • The last vestiges of Selenium 2 support have been removed.
  • I also installed the Gradle wrapper and upgraded to version 8.3.

NOTE: As of this release, Selenium 4 support for HtmlUnitDriver is limited to self-provided sessions. The ability to provide HtmlUnit sessions from the Grid was not retained in the Selenium 4 Grid implementation. Consequently, unit tests are currently running in Firefox.
ALSO: The installation of JUnit 4 method hooks by JUnit Foundation stopped working at some point. I suspect this may be related to updates in the toolchain I'm using (Gradle/Java). I haven't been able to pin this down yet, but I think the next thing to try is running the tests in a simple Maven harness.

Fix optional element stale reference handling

22 May 07:42
Compare
Choose a tag to compare

In this release, I decided to add unit tests for optional element behavior, especially as this relates to nodes that appear and vanish after the creation of the corresponding RobustWebElement. In the process, I discovered a few bugs and logic issues in this area.

  • If the reference attached to an optional element went stale and couldn't be refreshed (element not found), a second fruitless attempt was made to acquire the reference. Now the failed refresh is detected and the original StaleElementReferenceException is thrown.
  • Handling of element reference refresh timeouts was incorrect:
    • If the refresh was performed to recover from a stale reference exception, the code was simply re-throwing timeout. Now the original stale reference exception is repackaged to indicate the refresh failure.
    • If the refresh was just acquiring an element reference (not stale reference exception recovery), the timeout was improperly transformed into a refresh failure exception. Now the cause of the timeout is re-thrown instead.
  • If we failed to locate an element using the SCRIPT strategy, the message in the NoSuchElementException failure incorrectly referred to a locator and index that don't apply to this strategy. Now we refer to the script and context element as we should.
  • I added a bunch of code comments in these areas so I don't have work so hard figuring out how this code works next time.
  • I added two new unit tests to keep an eye on this functionality,
  • I also added final qualifiers to the "locator" fields in all of the Using enumerations.