[py] Use a capability to switch engines for Edge #8096
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Based on the discussion in #7977 we've decided to use a new "ms:edgeChromium" boolean capability key for EdgeDriver which tells the driver service whether to launch Edge Legacy or Chromium. This change updates the Edge .Options class to use this capability in place of the previous is_legacy constructor parameter.
The change also includes some cleanup in the Edge and Chromium drivers. The 'verbose' flag is now used all the time instead of being legacy-only. The duplicate page_load_strategy getter/setter has been removed since the base ChromiumDriver class takes care of this. The Chromium driver no longer takes the deprecated 'executable_path' parameter. The subclasses will always provide a service object, so this param shouldn't be needed. This shouldn't be a breaking change since ChromiumDriver is fairly new and isn't present in a stable release yet.
Lastly, added bazel test targets for Edge and Edge Chromium.
Motivation and Context
Using a capability key allows EdgeOptions to work with a RemoteWebDriver. A python client can now configure the EdgeOptions for either Legacy or Chromium, and the remote Selenium server can make use of the capability to launch the correct Edge driver service. Previously, the is_legacy property on the EdgeOptions controlled how the EdgeOptions were serialized, but the serialized capabilities didn't carry any information about what flavor of Edge the client wants to use. This meant that the client could only safely send EdgeOptions to a remote server if they knew that a compatible Edge service was already running on that server.
Types of changes
Checklist