A browser automation framework and ecosystem.

Overview

Selenium

Python workflow Ruby workflow JavaScript workflow Java workflow

Selenium

Selenium is an umbrella project encapsulating a variety of tools and libraries enabling web browser automation. Selenium specifically provides an infrastructure for the W3C WebDriver specification — a platform and language-neutral coding interface compatible with all major web browsers.

The project is made possible by volunteer contributors who've generously donated thousands of hours in code development and upkeep.

Selenium's source code is made available under the Apache 2.0 license.

Documentation

Narrative documentation:

API documentation:

Pull Requests

Please read CONTRIBUTING.md before submitting your pull requests.

Requirements

  • Bazelisk, a Bazel wrapper that automatically downloads the version of Bazel specified in .bazelversion file and transparently passes through all command-line arguments to the real Bazel binary.
  • The latest version of the Java 11 OpenJDK
  • java and jar on the PATH (make sure you use java executable from JDK but not JRE).
    • To test this, try running the command javac. This command won't exist if you only have the JRE installed. If you're met with a list of command-line options, you're referencing the JDK properly.
  • Python 3.7+
  • python on the PATH
  • The Requests Library for Python: pip install requests
  • The tox automation project for Python: pip install tox
  • MacOS users should have the latest version of Xcode installed, including the command-line tools. The following command should work:
xcode-select --install
  • Windows users should have the latest version of Visual Studio command line tools and build tools installed
    • BAZEL_VS environment variable should point to the location of the build tools, e.g. C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
    • BAZEL_VC environment variable should point to the location of the command line tools, e.g. C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC
    • BAZEL_VC_FULL_VERSION environment variable should contain the version of the installed command line tools, e.g. 14.27.29110

Optional Requirements

  • Ruby 2.0

Internet Explorer Driver

If you plan to compile the IE driver, you also need:

The build will work on any platform, but the tests for IE will be skipped silently if you are not building on Windows.

Building

Bazel

Bazel was built by the fine folks at Google. Bazel manages dependency downloads, generate the Selenium binaries, executes tests, and does it all rather quickly.

More detailed instructions for getting Bazel running are below, but if you can successfully get the java and javascript folders to build without errors, you should be confident that you have the correct binaries on your system.

Before Building

Ensure that you have Firefox installed and the latest geckodriver on your $PATH. You may have to update this from time to time.

Common Build Targets

To build the most commonly-used modules of Selenium from source, execute this command from the root project folder:

bazel build java/...

If you have some extra time on your hands, you can run this command to get extra confidence that your build is successful. This will do a lot more work to build all the javascript artifacts:

bazel build java/... javascript/...

If you're making changes to the java/ or javascript/ folders in this project, and this command executes without errors, you should be able to create a PR of your changes. (See also CONTRIBUTING.md)

Build Details

  • Bazel files are called BUILD.bazel
  • crazyfun build files are called build.desc. This is an older build system, still in use in the project for Ruby bindings mostly.

The order the modules are built is determined by the build system. If you want to build an individual module (assuming all dependent modules have previously been built), try the following:

bazel test javascript/atoms:test

In this case, javascript/atoms is the module directory, test is a target in that directory's BUILD.bazel file.

As you see build targets scroll past in the log, you may want to run them individually.

Common Tasks (Bazel)

To build the bulk of the Selenium binaries from source, run the following command from the root folder:

bazel build java/... javascript/...

To build the grid deployment jar, run this command:

bazel build grid

To run tests within a particular area of the project, use the "test" command, followed by the folder or target. Tests are tagged with "small", "medium", or "large", and can be filtered with the --test_size_filters option:

bazel test --test_size_filters=small,medium java/...

Bazel's "test" command will run all tests in the package, including integration tests. Expect the test java/... to launch browsers and consume a considerable amount of time and resources.

Editing Code

Most of the team use either Intellij IDEA or VS.Code for their day-to-day editing. If you're working in IntelliJ, then we highly recommend installing the Bazel IJ plugin which is documented on its own site.

If you do use IntelliJ and the Bazel plugin, there is a project view checked into the tree in scripts/ij.bazelproject which will make it easier to get up running, and editing code :)

Tour

The codebase is generally segmented around the languages used to write the component. Selenium makes extensive use of JavaScript, so let's start there. Working on the JavaScript is easy. First of all, start the development server:

bazel run debug-server

Now, navigate to http://localhost:2310/javascript. You'll find the contents of the javascript/ directory being shown. We use the Closure Library for developing much of the JavaScript, so now navigate to http://localhost:2310/javascript/atoms/test.

The tests in this directory are normal HTML files with names ending with _test.html. Click on one to load the page and run the test.

Maven POM files

Here is the public Selenium Maven repository.

Build Output

bazel makes a top-level group of directories with the bazel- prefix on each directory.

Help with go

More general, but basic, help for go

./go --help

go is just a wrapper around Rake, so you can use the standard commands such as rake -T to get more information about available targets.

Maven per se

If it is not clear already, Selenium is not built with Maven. It is built with bazel, though that is invoked with go as outlined above, so you do not have to learn too much about that.

That said, it is possible to relatively quickly build Selenium pieces for Maven to use. You are only really going to want to do this when you are testing the cutting-edge of Selenium development (which we welcome) against your application. Here is the quickest way to build and deploy into your local maven repository (~/.m2/repository), while skipping Selenium's own tests.

./go maven-install

The maven jars should now be in your local ~/.m2/repository.

Useful Resources

Refer to the Building Web Driver wiki page for the last word on building the bits and pieces of Selenium.

Running Browser Tests on Linux

In order to run Browser tests, you first need to install the browser-specific drivers, such as geckodriver, chromedriver, or edgedriver. These need to be on your PATH.

By default, Bazel runs these tests in your current X-server UI. If you prefer, you can alternatively run them in a virtual or nested X-server.

  1. Run the X server Xvfb :99 or Xnest :99
  2. Run a window manager, for example, DISPLAY=:99 jwm
  3. Run the tests you are interested in:
bazel test --test_env=DISPLAY=:99 //java/... --test_tag_filters=chrome

An easy way to run tests in a virtual X-server is to use Bazel's --run_under functionality:

bazel test --run_under="xvfb-run -a" //java/... --test_tag_filters=chrome

Bazel Installation/Troubleshooting

MacOS

bazelisk

Bazelisk is a Mac-friendly launcher for Bazel. To install, follow these steps:

brew tap bazelbuild/tap && \
brew uninstall bazel; \
brew install bazelbuild/tap/bazelisk

Xcode

If you're getting errors that mention Xcode, you'll need to install the command-line tools.

Bazel for Mac requires some additional steps to configure properly. First things first: use the Bazelisk project (courtesy of philwo), a pure golang implementation of Bazel. In order to install Bazelisk, first verify that your Xcode will cooperate: execute the following command:

xcode-select -p

If the value is /Applications/Xcode.app/Contents/Developer/, you can proceed with bazelisk installation. If, however, the return value is /Library/Developer/CommandLineTools/, you'll need to redirect the Xcode system to the correct value.

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/
sudo xcodebuild -license

The first command will prompt you for a password. The second step requires you to read a new Xcode license, and then accept it by typing "agree".

(Thanks to this thread for these steps)

Issues
  • Click button does not work after upgrade to selenium 2.48.0

    Click button does not work after upgrade to selenium 2.48.0

    Doing test automation on a Ember.js web application: I have a button which is covered by a <div> with a cooky notification. It looks something like this:

    image

    With Selenium 2.47.1 clicking on that button works as expected in Firefox. With Selenium 2.48.0 clicking this button does not work in Firefox, although there is no exception or error. It's like selenium thinks that the click worked properly but actually the click had no effect. Here the Robot Framework log:

    image

    The structure of HTML is something like this:

    <header>...</header>
    <main>
      <div>
        ::before
        <form>
          <button>Last check</button>
        </form>
      ::after
      </div>
    </main>
    <div>
      <div class="cookie-notification">
        ::before
        <a href="http://...">Close</a>
        ::after
      </div>
    </div>
    

    Just for comparison - executing the same click with Selenium 2.47.1 in Chrome results in a WebDriverException:

    image

    Traceback (most recent call last):
      File "<string>", line 2, in click_button
      File "C:\Python27\lib\site-packages\Selenium2Library\keywords\keywordgroup.py", line 15, in _run_on_failure_decorator
        return method(*args, **kwargs)
      File "C:\Python27\lib\site-packages\Selenium2Library\keywords\_formelement.py", line 316, in click_button
        element.click()
      File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 69, in click
        self._execute(Command.CLICK_ELEMENT)
      File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 448, in _execute
        return self._parent.execute(command, params)
      File "C:\Python27\lib\site-packages\Selenium2Library\webdrivermonkeypatches.py", line 11, in execute
        result = self._base_execute(driver_command, params)
      File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 196, in execute
        self.error_handler.check_response(response)
      File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 181, in check_response
        raise exception_class(message, screen, stacktrace)
    

    System configuration I:

    • Microsoft Windows 7 64 bit
    • Firefox 41.0.2
    • Selenium 2.47.1
    • selenium2library 1.7.4
    • Robot Framework 2.9.2 ==> click <button> works

    System configuration II:

    • same as configuration I but
    • Google Ghrome Version 46.0.2490.80 m ==> click <button> does not work, WebDriverException

    System configuration III:

    • same as configuration I but
    • Selenium 2.48.0 ==> click <button> does not work, no error/exception
    D-firefox 
    opened by Tset-Noitamotua 115
  • Selenium 3.4.0 Unable to find matching capabilities

    Selenium 3.4.0 Unable to find matching capabilities

    OS: Ubuntu Selenium Version: 3.4.0 Browser: Firefox 45 Geckodriver: 0.16.0

    Hi, After updating to Selenium 3.4.0 it can't start Firefox:

    File "/root/venv/3.5/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 152, in __init__
        keep_alive=True)
      File "/root/venv/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 98, in __init__
        self.start_session(desired_capabilities, browser_profile)
      File "/root/venv/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 185, in start_session
        response = self.execute(Command.NEW_SESSION, parameters)
      File "/root/venv/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 249, in execute
        self.error_handler.check_response(response)
      File "/root/venv/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.WebDriverException: Message: Unable to find a matching set of capabilities
    

    -------- Using Firefox 45 due to click not working on newer versions (https://github.com/mozilla/geckodriver/issues/322) --------

    opened by jricardo27 98
  • Grid does not handle w3c capabilities correctly

    Grid does not handle w3c capabilities correctly

    Meta -

    OS: Mac OS El Capitan 10.11.6

    Selenium Version: 3.3.3

    Browser: Firefox

    Browser Version: 52.0.2 (64-bit)

    Expected Behavior -

    In python, the following should create a Remote driver:

    from selenium import webdriver

    cap = {'platform': 'ANY', 'browserName': 'firefox', 'version': '', 'marionette': True, 'javascriptEnabled': True} driver = webdriver.Remote(command_executor='http://<my_server_ip>:4444/wd/hub', desired_capabilities=cap)

    (note: this works with selenium 2.53.6 with python2.7 when executed against the same server)

    Actual Behavior -

    Thows exception: KeyError: 'message'

    When I pdb into this I see the following response from the server:

    {'value': '{"status":13,"value":{"class":"java.lang.NullPointerException","stackTrace":[{"fileName":"HashMap.java","className":"java.util.HashMap","methodName":"putMapEntries","lineNumber":500},{"fileName":"HashMap.java","className":"java.util.HashMap","methodName":"putAll","lineNumber":784},{"fileName":"DesiredCapabilities.java","className":"org.openqa.selenium.remote.DesiredCapabilities","methodName":"\u003cinit\u003e","lineNumber":54},{"fileName":"RequestHandler.java","className":"org.openqa.grid.web.servlet.handler.RequestHandler","methodName":"process","lineNumber":104},{"fileName":"DriverServlet.java","className":"org.openqa.grid.web.servlet.DriverServlet","methodName":"process","lineNumber":83},{"fileName":"DriverServlet.java","className":"org.openqa.grid.web.servlet.DriverServlet","methodName":"doPost","lineNumber":67},{"fileName":"HttpServlet.java","className":"javax.servlet.http.HttpServlet","methodName":"service","lineNumber":707},{"fileName":"HttpServlet.java","className":"javax.servlet.http.HttpServlet","methodName":"service","lineNumber":790},{"fileName":"ServletHolder.java","className":"org.seleniumhq.jetty9.servlet.ServletHolder","methodName":"handle","lineNumber":841},{"fileName":"ServletHandler.java","className":"org.seleniumhq.jetty9.servlet.ServletHandler","methodName":"doHandle","lineNumber":543},{"fileName":"ScopedHandler.java","className":"org.seleniumhq.jetty9.server.handler.ScopedHandler","methodName":"nextHandle","lineNumber":188},{"fileName":"SessionHandler.java","className":"org.seleniumhq.jetty9.server.session.SessionHandler","methodName":"doHandle","lineNumber":1584},{"fileName":"ScopedHandler.java","className":"org.seleniumhq.jetty9.server.handler.ScopedHandler","methodName":"nextHandle","lineNumber":188},{"fileName":"ContextHandler.java","className":"org.seleniumhq.jetty9.server.handler.ContextHandler","methodName":"doHandle","lineNumber":1228},{"fileName":"ScopedHandler.java","className":"org.seleniumhq.jetty9.server.handler.ScopedHandler","methodName":"nextScope","lineNumber":168},{"fileName":"ServletHandler.java","className":"org.seleniumhq.jetty9.servlet.ServletHandler","methodName":"doScope","lineNumber":481},{"fileName":"SessionHandler.java","className":"org.seleniumhq.jetty9.server.session.SessionHandler","methodName":"doScope","lineNumber":1553},{"fileName":"ScopedHandler.java","className":"org.seleniumhq.jetty9.server.handler.ScopedHandler","methodName":"nextScope","lineNumber":166},{"fileName":"ContextHandler.java","className":"org.seleniumhq.jetty9.server.handler.ContextHandler","methodName":"doScope","lineNumber":1130},{"fileName":"ScopedHandler.java","className":"org.seleniumhq.jetty9.server.handler.ScopedHandler","methodName":"handle","lineNumber":141},{"fileName":"HandlerWrapper.java","className":"org.seleniumhq.jetty9.server.handler.HandlerWrapper","methodName":"handle","lineNumber":132},{"fileName":"Server.java","className":"org.seleniumhq.jetty9.server.Server","methodName":"handle","lineNumber":564},{"fileName":"HttpChannel.java","className":"org.seleniumhq.jetty9.server.HttpChannel","methodName":"handle","lineNumber":320},{"fileName":"HttpConnection.java","className":"org.seleniumhq.jetty9.server.HttpConnection","methodName":"onFillable","lineNumber":251},{"fileName":"AbstractConnection.java","className":"org.seleniumhq.jetty9.io.AbstractConnection$ReadCallback","methodName":"succeeded","lineNumber":279},{"fileName":"FillInterest.java","className":"org.seleniumhq.jetty9.io.FillInterest","methodName":"fillable","lineNumber":112},{"fileName":"ChannelEndPoint.java","className":"org.seleniumhq.jetty9.io.ChannelEndPoint$2","methodName":"run","lineNumber":124},{"fileName":"QueuedThreadPool.java","className":"org.seleniumhq.jetty9.util.thread.QueuedThreadPool","methodName":"runJob","lineNumber":672},{"fileName":"QueuedThreadPool.java","className":"org.seleniumhq.jetty9.util.thread.QueuedThreadPool$2","methodName":"run","lineNumber":590},{"fileName":"Thread.java","className":"java.lang.Thread","methodName":"run","lineNumber":745}]}}', 'status': 500}

    Steps to reproduce -

    Execute the above steps in python using selenium 3.3.3, firefox 52.0.2, geckodriver 0.15.0. The server is using selenium-server-standalone-3.3.1.jar on ubuntu 16.10. I'm happy to provide the ip of the server privately if it'll help.

    C-grid 
    opened by ghost 76
  • "Port" leaking in C# WebDriver.dll

    Meta -

    OS:
    Windows 10, Windows Server 2008 R2 Selenium Version:
    WebDriver 3.4.0 Browser:
    Firefox and Chrome

    Browser Version:
    Firefox: 53.0.3 (32 bits) Chrome: Version 59.0.3071.86 (Official Build) (64-bit)

    Expected Behavior -

    WebDriver suppose to close the ports after each commands sent to ChromeDriver or GeckoDriver

    Actual Behavior -

    WebDriver keeps the ports open until the WebDriver quit(). This caused the ports run out from the OS when I had 8 parallel tests running together without open and close ChromeDriver or FirefoxDriver.

    Steps to reproduce -

    Run the Selenium Tests with ChromeDriver or FirefoxDriver with any simple action, e.g. Navigate to a website. Repeat this step for 1000 time.

    Open a Windows Command Prompt, type: netstat -a -b

    You will find the ChromeDriver/GeckoDriver holds up about 1000 ports without releasing.

    I have amended the code in OpenQA.Selenium.Remote.DriverServiceCommandExecutor.cs, line 37 old code: this(driverService, commandTimeout, true) new code: this(driverService, commandTimeout, false)

    and

    OpenQA.Selenium.Remote.HttpCommandExecutor.cs, line 46: old code: : this(addressOfRemoteServer, timeout, true) new code: : this(addressOfRemoteServer, timeout, false)

    Retest again with the above step, we can see the ChromeDriver / Gecko Driver doesn't hold up the port any more.

    It seems for HttpWebRequest object, even it is out of scope, if its' KeepAlive property is true, the .net runtime holds it until the WebDriver is quit and closed.

    In theory, I can't think of HttpCommandExecutor should have HttpWebRequest should have KeepAlive = true as it looks like HttpCommandExecutor is running stateless commands. Maybe you can consider to remove the passing in of the attribute to avoid future problem.

    Kind regards

    Ken Han

    Self Service Tech Lead Fairfax Media Australia

    C-dotnet 
    opened by kenhan168 71
  • JWP actions endpoints do not get translated to W3C by standalone

    JWP actions endpoints do not get translated to W3C by standalone

    Meta -

    OS:
    OSX 10.11.6 Selenium Version:
    3.3.1 Browser:
    Firefox

    Browser Version:
    52.1

    Expected Behavior -

    As per https://github.com/SeleniumHQ/selenium/issues/2285, mouse hover events should work with selenium 3.x and geckodriver 0.15.

    Actual Behavior -

    It gives error :

    org.openqa.selenium.UnsupportedCommandException: mouseMoveTo Build info: version: '3.3.1', revision: '5234b32', time: '2017-03-10 09:04:52 -0800' System info: host: 'MacBook-Pro-4.local', ip: 'fe80:0:0:0:6203:8ff:fea6:d310%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.8.0_91' Driver info: driver.version: RemoteWebDriver Command duration or timeout: 9 milliseconds at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:638) at org.openqa.selenium.remote.RemoteExecuteMethod.execute(RemoteExecuteMethod.java:35) at org.openqa.selenium.remote.RemoteMouse.mouseMove(RemoteMouse.java:89) at org.openqa.selenium.interactions.MoveMouseAction.perform(MoveMouseAction.java:43) at org.openqa.selenium.interactions.CompositeAction.perform(CompositeAction.java:36) at org.openqa.selenium.interactions.Actions$BuiltAction.perform(Actions.java:637) at org.openqa.selenium.interactions.Actions.perform(Actions.java:596) at PageObjects.CoverStoriesPage.tap_NextButton_onHints(CoverStoriesPage.java:435) at PageObjects.CoverStoriesPage.commentOnArticle(CoverStoriesPage.java:325) at tests.CoverStoriesTest.addCommentOnArticle(CoverStoriesTest.java:136) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:100) at org.testng.internal.Invoker.invokeMethod(Invoker.java:646) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:811) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1129) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) at org.testng.TestRunner.privateRun(TestRunner.java:746) at org.testng.TestRunner.run(TestRunner.java:600) at org.testng.SuiteRunner.runTest(SuiteRunner.java:366) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319) at org.testng.SuiteRunner.run(SuiteRunner.java:268) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1264) at org.testng.TestNG.runSuitesLocally(TestNG.java:1189) at org.testng.TestNG.runSuites(TestNG.java:1104) at org.testng.TestNG.run(TestNG.java:1076) at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:152) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:57) Caused by: org.openqa.selenium.UnsupportedCommandException: mouseMoveTo Build info: version: '3.3.1', revision: '5234b32', time: '2017-03-10 09:04:52 -0800' System info: host: 'MacBook-Pro-4.local', ip: 'fe80:0:0:0:6203:8ff:fea6:d310%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.8.0_91' Driver info: driver.version: RemoteWebDriver Build info: version: '3.3.1', revision: '5234b325d5', time: '2017-03-10 09:10:29 +0000' System info: host: 'MacBook-Pro-4.local', ip: 'fe80:0:0:0:6203:8ff:fea6:d310%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.8.0_73' Driver info: driver.version: RemoteWebDriver at org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:220) at org.openqa.selenium.remote.http.AbstractHttpCommandCodec.encode(AbstractHttpCommandCodec.java:118) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:157) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604) at org.openqa.selenium.remote.RemoteExecuteMethod.execute(RemoteExecuteMethod.java:35) at org.openqa.selenium.remote.RemoteMouse.mouseMove(RemoteMouse.java:89) at org.openqa.selenium.support.events.internal.EventFiringMouse.mouseMove(EventFiringMouse.java:58) at org.openqa.selenium.remote.server.handler.interactions.MouseMoveToLocation.call(MouseMoveToLocation.java:59) at org.openqa.selenium.remote.server.handler.interactions.MouseMoveToLocation.call(MouseMoveToLocation.java:32) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:176) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

    Steps to reproduce -

    // Switch to new window opened
    	for(String winHandle : driver.getWindowHandles()){
    		driver.switchTo().window(winHandle);
    	}
    
    	driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    
    	WebElement copyrightLink=driver.findElement(copyright);
    
            Actions actions1 = new Actions(driver);
            actions1.moveToElement(copyrightLink).perform();
    	actions1.click().perform();
    	Thread.sleep(1000);
    
    C-java C-remote 
    opened by puneetkaur11 65
  • The HTTP request to the remote WebDriver server for URL http://localhost:42607/session timed out after 60 seconds.

    The HTTP request to the remote WebDriver server for URL http://localhost:42607/session timed out after 60 seconds.

    Meta -

    OS: Win 10 c64

    Selenium Version: 3.9.0.0 Selenium.WebDriver.ChromeDriver version="2.35.0" targetFramework="net47"

    Browser: Chrome Version 64.0.3282.140 (Official Build) (64-bit)

    Expected Behavior -

    Get data back. It is the same code I use in my unit test. My unit test passes successfully, but when running in IIS I get the error below.

    Actual Behavior -

    Throws exception when hitting the chromeDriver constructor. Strange exception message is: http://localhost:42607/session timed out after 60 seconds. I do not do a request to this url? I don't know where it comes from?! When I open this url in chrome, it displays: Unknown command.

    { "Message": "An error has occurred.", "ExceptionMessage": "The HTTP request to the remote WebDriver server for URL http://localhost:42607/session timed out after 60 seconds.", "ExceptionType": "OpenQA.Selenium.WebDriverException", "StackTrace": " at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo)\r\n at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)\r\n at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)\r\n at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary2 parameters)\r\n at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)\r\n at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)\r\n at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeDriverService service, ChromeOptions options, TimeSpan commandTimeout)\r\n at Web.Scraping.WebApi.ScrapeController.Post(List1 listDTO) in C:\Users\Admin\Documents\Visual Studio 2017\Projects\Phantomjs.UnitTests\Web.Scraping.WebApi\ScrapeController.cs:line 45\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.b__9(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()", "InnerException": { "Message": "An error has occurred.", "ExceptionMessage": "The request was aborted: The operation has timed out.", "ExceptionType": "System.Net.WebException", "StackTrace": " at System.Net.HttpWebRequest.GetResponse()\r\n at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo)" } }

    Steps to reproduce -

    This code works fine in my unit test and also worked fine in IIS before, but out of sudden it is broken.

    var co = new ChromeOptions();
               co.AddArgument("headless");
               co.AcceptInsecureCertificates = true;
               co.PageLoadStrategy = PageLoadStrategy.Normal;
    
               Dictionary<string, bool> dic = new Dictionary<string, bool>();
    
               using (var driver = new ChromeDriver(co))
               {
                   try
                   {
                       var urls = new string[] { paypalUrl, noPaypalUrl, paypalUrl1 };
                       driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
    
                       for (int i = 0; i < urls.Length; i++)
                       {
                           var url = urls[i];
    
                           var exists = driver.CheckElementExists(url, 
                               wt => !string.IsNullOrWhiteSpace(wt.FindElement(By.CssSelector("ul.payment-type-list")).Text), "li.pt-paypal");
    
                           dic.Add(url, exists);
                       }
    
                       driver.Close();
    
    ....
    
     static IWebElement TryFindElementByCssSelector(this ChromeDriver self, string cssSelector)
           {
               try
               {
                   return self.FindElementByCssSelector(cssSelector);
               }
               catch (Exception) { }
    
               return null;
           }
    
           public static bool CheckElementExists(this ChromeDriver driver, string url, Func<IWebDriver, bool> waitCondition, string cssSelectorToLookFor)
           {
               driver.Navigate().GoToUrl(url);
               var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
               wait.Until(waitCondition);
    
               var liPaypal = driver.TryFindElementByCssSelector(cssSelectorToLookFor);
    
               return liPaypal == null ? false : true;
           }
    
    opened by Legends 53
  • .NET: Add support for .NET Core

    .NET: Add support for .NET Core

    This PR makes the Selenium WebDriver project compile on .NET Core. The changes basically boil down to fixes for:

    • The new reflection API
    • The absence of Serialization
    • Standardization on .Dispose instead of .Close
    • Changes in how OS-related information is accessed
    • Changes in the HttpWebRequest and HttpWebResponse classes

    Happy to work with you on any feedback you may provide,

    C-dotnet 
    opened by qmfrederik 51
  • Shadow DOM traversal support

    Shadow DOM traversal support

    I've been gradually trying to push support of shadow DOM v1 into selenium (see #4230, #5762).

    However, we are still missing one major piece: traversal.

    There needs to be some ability to traverse shadow DOM when calling FindElement and what not.

    So maybe we can discuss some possible implementations here?

    What we can't/shouldn't do:

    • Alter how existing selectors work (CSS, XPath, etc. they should all behave as they do now)
    • Implement deprecated things like /deep/
    • Implement our own selector syntax/mechanism

    The way I see this working is that we should treat the DOM as we would in the browser, meaning there will not be a way to select a deep element in one call:

    element
      .FindElement(By.CssSelector("foo"))
      .ShadowRoot?
      .FindElement(By.CssSelector("bar"));
    

    Which, in the browser, would be structured the same (no shortcuts):

    element
      .querySelector('foo')
      .shadowRoot
      .querySelector('bar');
    

    So maybe we just need to implement ShadowRoot on WebElement? Which can be null (just like in the browser).

    A-needs decision I-enhancement 
    opened by 43081j 50
  • Download file in headless chrome

    Download file in headless chrome

    Meta -

    OS: OSX Selenium Version: 3.8.1 Browser: Chrome

    Expected Behavior -

    Permit files to be downloaded in headless mode.

    Actual Behavior -

    Files aren't downloaded.

    Steps to reproduce -

    Launch chrome in headless mode and try to download any file.

    Looks like it is a feature to prevent sites from downloading files when running chrome in headless mode. https://bugs.chromium.org/p/chromium/issues/detail?id=696481

    To permit downloads it's necessary to send a command to chrome. I'm using java and I couldn't find a way to make it work.

    I even tried sending a post request to /session/:sessionId/chromium/send_command but that didn't work.

    R-blocked on external C-dotnet C-java D-chrome I-enhancement 
    opened by jonhkr 50
  • Selenium Click functionality does not work consistently

    Selenium Click functionality does not work consistently

    Meta -

    OS:
    Windows/Linux (Cent OS & Ubuntu) Selenium Version:
    Any WebDriver version Browser:
    Chrome/Firefox and IE (Any version)

    Expected Behavior -

    Click operation should always work when no exception is thrown

    Actual Behavior -

    Click action works something and sometime it does not. It shows the element is actually being clicked, as for link and buttons we can see dotted border around the object. However the action on that click is not triggered. I tried .Click() / Actions Class/ Click using JS/ Press Enter button on element but none is working all the time.

    Steps to reproduce -

    I wish I could have provided the steps but this is happening on multiple webpages on click action. Many people around world is facing this issue. Save can be checked on stackoverflow or other forums. Element is present on the page and page is completely loaded when I took screenshot. I have seen this issue with Java and Python web drivers.

    Suggestions & Observations -

    I think selenium is sending the click but browser (IE/FF/chrome) are not ready to process it. May be its binding to JS is not done or something like that. If that is the case then is there a way selenium can find if the browsers are ready to perform click. I guess selenium already check for DOM status. Please see if anything else which can solve the problem

    opened by vinaybond 50
  • [🐛 Bug]: SelectElement not working after updating selenium webdriver 4 and IEDriverServer 4

    [🐛 Bug]: SelectElement not working after updating selenium webdriver 4 and IEDriverServer 4

    What happened?

    after updating selenium WebDriver (3.15 to 4.0.0) and IEDriver (3.150.1 to 4.0.0) getting below error while setting dropdown value, code was working properly with old selenium version (3): Error : Cannot click on option element. Executing JavaScript click function returned an unexpected error, but no error could be returned from Internet Explorer's JavaScript engine

    HTML :

    C# code : public By countrySelector = By.Id("selCountry"); public string Country { set => new SelectElement(Driver.FindElement(countrySelector )).SelectByText(value); }

       Country= "India";
    

    How can we reproduce the issue?

    HTML : 
    <TD vAlign=top><SELECT id=selCountry">
    <OPTION selected value=0>None</OPTION> <OPTION value=1>India</OPTION></SELECT>
    </TD>
           
    
     public By countrySelector = By.Id("selCountry");
    
            public string Country
            {
                set => new SelectElement(Driver.FindElement(countrySelector )).SelectByText(value);
            }
    
    Country= "India";
    

    Relevant log output

    Cannot click on option element. Executing JavaScript click function returned an unexpected error, but no error could be returned from Internet Explorer's JavaScript engine
    

    Operating System

    Window server 2016

    Selenium version

    C# Selenium version 4 , IEDriver 4

    What are the browser(s) and version(s) where you see this issue?

    Internet Explorer 11

    What are the browser driver(s) and version(s) where you see this issue?

    IEDriver 4

    Are you using Selenium Grid?

    no

    R-awaiting answer C-cpp D-IE I-defect 
    opened by shlokVK 49
  • [🐛 Bug]: getScreenshotAs on web element doesn't use retina resolution unlike driver screenshot

    [🐛 Bug]: getScreenshotAs on web element doesn't use retina resolution unlike driver screenshot

    What happened?

    Hello,

    driver.getScreenshotAs generates HiDPI screenshot when ran on retina display. webElement.getScreenshotAs generates single pixel screenshot in the same environment/test.

    Didn't notice a setting to affect this. Could you please help me figure out what am I missing?

    How can we reproduce the issue?

    execute `webElement.getScreenshotAs` using hi dpi output device
    

    Relevant log output

    NA
    

    Operating System

    Latest Mac

    Selenium version

    Java 4.1.4

    What are the browser(s) and version(s) where you see this issue?

    Chrome 101

    What are the browser driver(s) and version(s) where you see this issue?

    ChromeDriver 101.0.4951.41

    Are you using Selenium Grid?

    No response

    R-awaiting answer I-defect 
    opened by MykolaGolubyev 2
  • [java] Include JMX monitoring feature in the Grid local distributor

    [java] Include JMX monitoring feature in the Grid local distributor

    Description

    This PR implements issue #9794. It exposes metrics through JMX in the local distributor, namely:

    • Number of up nodes
    • Number of down nodes
    • Number of active slots
    • Number of idle slots

    Regarding the session elapsed time (requested in the original feature proposal issue), that info should be available using GraphQL.

    Motivation and Context

    Grid 4 already implements JMX monitoring on the nodes. This PR allows to gather also other metrics in the local distributor.

    Types of changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [X] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist

    • [X] I have read the contributing document.
    • [ ] My change requires a change to the documentation.
    • [ ] I have updated the documentation accordingly.
    • [X] I have added tests to cover my changes.
    • [X] All new and existing tests passed.
    C-java 
    opened by bonigarcia 0
  • Update submit function

    Update submit function

    There was a bug that Java fixed that the other languages didn't. I also noticed that Java does everything in one wire call instead of two like the other languages, so I updated the other languages to match Java.

    Also, when Submit method failed in Java, it's returning an unhelpful JavaScriptError. When submit method failed in the other languages, it returned an unhelpful NoSuchElementError which is confusing since the user didn't think they were searching for anything, and the locator is confusing unless they understand the implementation.

    This PR uses: To submit an element, it must be nested inside a form element

    Ruby & Java both have an UnsupportedOperation error, the other languages I went with the generic error.

    If anyone has preferences for a different message or different exception class for any of these, let me know.

    @harsha509 yeah, I made sure the existing submit test passed, but I didn't add any of the other tests.

    C-py C-rb C-dotnet C-java C-nodejs 
    opened by titusfortner 2
  • [dotnet] allow RemoteWebDriver to access Selenium logs

    [dotnet] allow RemoteWebDriver to access Selenium logs

    There are 3 options I can see for quickly fixing #8229, none of them are ideal.

    1. Require users to subclass RemoteWebDriver and add implementation for ISupportsLog which I *think should "just work" (at least it did in my quick test of it).
    public class RemoteChromeDriver : RemoteWebDriver, ISupportsLogs
    
    1. This PR, which would allow a user to do this:
    var customCommandDriver = driver as ICustomDriverCommandExecutor;
    customCommandDriver.RegisterCustomDriverCommands(ChromeDriver.CustomCommandDefinitions);
    
    ReadOnlyCollection<string> logTypes = driver.Manage().Logs.AvailableLogTypes;
    driver.Url = "https://selenium.dev/selenium/web/errors.html";
    driver.FindElement(By.CssSelector("input")).Click();
    ReadOnlyCollection<LogEntry> results = driver.Manage().Logs.GetLog("browser");
    
    1. Can remove some of the uglier parts of this PR and put more onus on user:
    IReadOnlyDictionary<string, CommandInfo> logCommands = new Dictionary<string, CommandInfo>
    {
        {
            DriverCommand.GetAvailableLogTypes,
            new HttpCommandInfo(HttpCommandInfo.GetCommand, "/session/{sessionId}/se/log/types")
        },
        {
            DriverCommand.GetLog,
            new HttpCommandInfo(HttpCommandInfo.PostCommand, "/session/{sessionId}/se/log")
        }
    };
    
    var customCommandDriver = driver as ICustomDriverCommandExecutor;
    customCommandDriver.RegisterCustomDriverCommands(logCommands);
    
    ReadOnlyCollection<string> logTypes = driver.Manage().Logs.AvailableLogTypes;
    driver.Url = "https://selenium.dev/selenium/web/errors.html";
    driver.FindElement(By.CssSelector("input")).Click();
    ReadOnlyCollection<LogEntry> results = driver.Manage().Logs.GetLog("browser");
    

    The existing code allows driver classes for drivers that haven't implemented the logging endpoints, to call the log methods, but it won't actually send the commands. No error that the method isn't actually doing anything.

    This PR would always send the command but will swallow the not-implemented exception if the driver commands were not added. So same end result, but slightly less efficient, but if a user is calling for something that never returns anything anyway, maybe that doesn't matter from an implementation standpoint.

    Any feedback from anyone would be great on this, thanks.

    C-dotnet 
    opened by titusfortner 0
  • [java] prevent session from ending when cannot connect to sockets

    [java] prevent session from ending when cannot connect to sockets

    fixes #10661

    It looks like the way all Java AugmenterProviders work is by storing getImplementation(), so I don't see a way to wait for a user to try to use a DevTools function to make this call.

    This does 2 things.

    1. Rescues the exception by default so that no session gets killed as a result of this
    2. Sets up a new capability to prevent the Augmenter from even adding this. The other advantage is that the methods from this Augmentation won't be added or usable in such a session

    I've tested it and it works on Firefox, but couldn't figure out a way to add it to the test suite right now. Also, I couldn't figure out how to do something similar for HasCDP augmentation.

    If either of you can help on these, that would be helpful. Thanks.

    C-java 
    opened by titusfortner 2
Releases(selenium-4.1.0)
  • selenium-4.1.0(Nov 22, 2021)

    Changelog

    For each component's detailed changelog, please check:

    Commits in this release

    Click to see all the commits included in this release
    • a83f9be979 - Remove tempfile compatibility for Ruby 1.8 :: Alex Rodionov
    • db30b7fd12 - [js] updating rules_nodejs to 4.4.1 :: Sri Harsha
    • 5a554bde29 - [java] Remove Edge USE_CHROMIUM flag. (#9921) :: Brandon Walderman
    • 4829bfcaa9 - Add some docs on how to run the atoms tests :: Simon Mavi Stewart
    • 49ebfb9f91 - Moving from issue templates to issue forms. :: Diego Molina
    • bf7cd04fce - Fixing typos on issue form. :: Diego Molina
    • 940d4f8383 - [java] Fix reference to removed withTagName method in RelativeLocator class comment (#9930) :: Coty Rosenblath
    • a501e6acbc - update doc string for CDP Commands (#9929) :: Marcin Strzyz
    • ee3ecbda34 - [build] Bump rules_pkg to 0.5.1 :: AutomatedTester
    • 23dd179349 - Fix the completion command's zsh completions :: Simon Mavi Stewart
    • 5380516e65 - [js] Fixes relative locator 'locateWith' export :: Sri Harsha
    • 1ca3c066ad - Fix XPath crash issue in IEDriver (#9939) :: Guangyue Xu
    • 7dacdc7773 - Using correct label names in issue forms. :: Diego Molina
    • 67444b87e0 - Adding label commenter configuration. :: Diego Molina
    • ee59a577d6 - Adding configuration for stale issues. :: Diego Molina
    • fc99bef068 - [dotnet] Refactor Cookie object constructors :: Jim Evans
    • f2d79cf639 - [dotnet] Fix WebDriver.csproj file to embed mutation listener resource :: Jim Evans
    • a25ad324ea - Pass WebDriver instead of Loggable to allow augmentation of HasLogEvents :: Puja Jagani
    • e1292c8d7e - [rb] fix downloading of Selenium Server :: titusfortner
    • b67f59f705 - [rb] update pre-built atoms :: titusfortner
    • 9816645a1a - [rb] fix test not handling redirect :: titusfortner
    • 89b7491045 - [rb] appease the linter :: titusfortner
    • 9ad3f5a94c - [rb] update changelog and bump version for 4.0.1 :: titusfortner
    • 049958b325 - [rb] missed references in the refactor :: titusfortner
    • 508dac46b6 - [rb] update changelog and bump version for 4.0.2 :: titusfortner
    • ef41797a77 - [rb] allow keys to be an empty array :: titusfortner
    • 5a3b372170 - [rb] element index is a property and not an attribute :: titusfortner
    • 4ac2b4a7f6 - actually do not camel case fx prefs (#9944) :: glaszig
    • 61dd966fd6 - [js] Add support for form submit in W3C mode (fixes #9916) (#9936) :: Sri Harsha
    • 6733a1b2f2 - [build] Move python version to a variable to be shared about :: AutomatedTester
    • 89f8bd553f - [rb] minor syntax fixes :: titusfortner
    • c83ce12ddb - [rb] update changelog and bump version for 4.0.3 :: titusfortner
    • f9ddb1500e - [build] Hack to get around Bazel not outputting things to stdout/strerr for docs task :: AutomatedTester
    • 6e0d581a47 - [build] call bazel directly for ruby docs :: AutomatedTester
    • cb7552e546 - [py] Add missing docs :: AutomatedTester
    • 23c6171614 - Fixing typos on label commenter :: Diego Molina
    • 26ed273c5e - Incrementing amount of stale operations :: Diego Molina
    • 91686084c4 - [build] update npm deps :: AutomatedTester
    • 42218df526 - [build] Audit NPM deps :: AutomatedTester
    • 833c6d6a7d - [java] Add multiple interface test for Augmenter :: Puja Jagani
    • 153298f1d2 - [py] Handle NO_Proxy for connections to the driver. Fixes #9925 :: AutomatedTester
    • 2d199e1873 - [build] Upgrade rules_python to 0.4.0 :: AutomatedTester
    • d594da2f5c - fix some typos, mostly in Java code (#9964) :: Andrei Solntsev
    • 96ee96aad3 - [dotnet] Refactor WebSocket handling of CDP :: Jim Evans
    • db37a9f779 - [py] Check the values in NO_PROXY and set the poolmanager accordingly :: AutomatedTester
    • 39f4b1b460 - [py] add more test cases for the no_proxy handling :: AutomatedTester
    • 5f57224838 - [py] correct flake8 warnings :: AutomatedTester
    • adeca5c45a - [py] remove py2 import code :: AutomatedTester
    • 151f4297e0 - [py] XFail alert tests due to https://bugzilla.mozilla.org/show_bug.cgi?id=1731795 :: AutomatedTester
    • c69e336b56 - Improving wording in issue template :: Diego Molina
    • 7941e123d0 - [grid] Allowing -1 as port to use a random port :: Diego Molina
    • 6bbafcdde8 - [event-bus] Handle Json parsing error such that future messages are not blocked :: Puja Jagani
    • 703af0a012 - Bump edge and chrome to latest releases :: Simon Mavi Stewart
    • f8011bc48c - [grid] Rejecting events when a Secret cannot be parsed. :: Diego Molina
    • d27b27a3bc - Ensure that a selected port is consistent :: Simon Mavi Stewart
    • 989e3b3cc8 - Run buildifier over the tree :: Simon Mavi Stewart
    • 4a7724438a - [grid] Fix host option is not working issue (#9981) :: kevin.cho
    • 1b81a9029c - Changing type of extraInfo from HashMap to ConcurrentHasMap to avoid ConcurrentModificationException while reading exception message by parallel threads. (#9926) :: hornyja4
    • 227396e240 - IEDriver NewWindow3 API workaround solution for Edge IEMode (#9950) :: Guangyue Xu
    • 487e47dbdd - highlight putting programming language in bug reports :: titusfortner
    • 319acea1d5 - [dotnet] Use nameof() for refactoring safety (#9958) :: Tom Longhurst
    • e7162bf03a - Updating .NET CHANGELOG with forgotten change to 4.0.1 :: Jim Evans
    • aceb6e2561 - [rb] update example with correct syntax :: titusfortner
    • f841c48aac - Add retry http request filter for transient errors. Integrate filter with ClientConfig. :: Puja Jagani
    • 1925185a0d - Avoid zipping tempfiles as it lacks rename permissions on Windows :: Alex Rodionov
    • 48595ef2a0 - [py] Correct docstrings around Service usage :: AutomatedTester
    • 294c5f9616 - [py] Upgrade sphinx to use latest :: AutomatedTester
    • 324ae1f5aa - Switch Bazel Ruby rules from Coinbase fork to Bazelruby :: Alex Rodionov
    • 88680111b8 - [build] Upgrade rules_python to 0.5.0 :: AutomatedTester
    • 917851a024 - [build] Upgrade rules_nodejs to 0.4.2 :: AutomatedTester
    • fdb43030d8 - [build] bump bazel to 4.2.1 :: AutomatedTester
    • c7155ed41b - sing a pumpkin carol :: Jari Bakken
    • 52df5ca9b2 - Increasing operations per run for stale issues :: Diego Molina
    • d6d2bb1039 - [js] Attach to page target while creating a CDP connection (#10005) :: Puja Jagani
    • dcd36f6ec7 - [js] Remove explicit id passing for CDP commands :: Puja Jagani
    • d9f2bb83a8 - [dotnet] Refactor registration and execution of custom WebDriver commands :: Jim Evans
    • a33e7396a0 - Create temporary folder for Edge in IEMode (#10006) :: Guangyue Xu
    • 2250ab2b4b - [iedriver] Formatting changes :: Jim Evans
    • ed08538bcc - [dotnet] Adding test configuration for Edge in IE Mode :: Jim Evans
    • 8e6b6ff5a5 - [iedriver] Prevent null pointer access in UI Automation for setting browser focus :: Jim Evans
    • d509170461 - [iedriver] Relocate removal of Edge temp directory to session quit, not window close :: Jim Evans
    • 24ad7a103d - [iedriver] Correct logic for finding new tab in Edge IE Mode :: Jim Evans
    • 6eff56ed67 - Fix Javadoc code block formatting (#9955) :: Trey Chadick
    • e51997bc45 - [Javascript] Ensure correct serialization of extensions in chromium.Options (#9495) :: Nick Gaya
    • 2a31dd298f - IEDriver: remove first run banner in Edge IEMode (#10013) :: Guangyue Xu
    • 63371baff8 - [iedriver] Fix closing of all tabs in Edge IE mode (#9998) :: yk9772
    • 7213e08aa4 - [grid] Unifying hub parameter name. :: Diego Molina
    • dd5dddba78 - [grid] Using non-loopback address when default config is used :: Diego Molina
    • e85cca6b7a - [nodejs] code cleanup second iteration (#9979) :: Potapov Dmitriy
    • e04552f485 - [node] Fix edge test failures (#10012) :: Nick Gaya
    • ca9b451401 - [grid] Respecting page origin for Live View :: Diego Molina
    • 69e73f3f4c - [java] We do not publish to Google Storage anymore :: Diego Molina
    • aea69daa1c - [java] Bumping Java & Grid to 4.1.0 :: Diego Molina
    • ec1e4fd77a - [iedriver] Fixing IE Mode quit behavior :: Jim Evans
    • cbb2796d65 - [java] Closing client when JVM shuts down :: Diego Molina
    • 54c34ba9a6 - [grid] Fixing setup for CDP-Grid tests :: Diego Molina
    • a88515bbc3 - [java] Adding macOS Monterrey to Platforms :: Diego Molina
    • 2eb9231b54 - [grid] Adding hub url for hub-node tests :: Diego Molina
    • 008893030c - [java] Running some screenshot tests only on CI :: Diego Molina
    • b2e9e25746 - [java] Ignoring test for Firefox and fixing window size :: Diego Molina
    • 3ce0c019f4 - [java] Fixing a few test annotations :: Diego Molina
    • d6acda7c02 - Updating IE driver resources and prebuilts for 4.0.0.0 release :: Jim Evans
    • c129dc9c7f - [js] Fix flaky CDP dom mutation (#10029) :: Puja Jagani
    • 5382a4970c - [JS] Updating rules_nodejs to 4.4.5 :: Sri Harsha
    • 7b21a322aa - [grid] Loading live view under https :: Diego Molina
    • 1f745a0514 - automatically provide links and close issues that depend on fixes in … (#10027) :: Titus
    • af668385ee - remove useless package, change io public api import to more common approach (#10037) :: Potapov Dmitriy
    • 2e32ee1764 - [java] Add test to check that executeScript returns a ShadowRoot object :: AutomatedTester
    • 0c10993134 - [py] add support for shadow dom end points :: AutomatedTester
    • f77b6e52f0 - [rb] Fix an example of WebDriver::Options (#9990) :: y-yagi
    • ab0e6dda95 - [java][cdp] Add v96 :: Diego Molina
    • d0f70ccd33 - [rb] bump devtools version to 95 :: titusfortner
    • 167a2e8086 - [java] Improving docs for CDP generation in Java :: Diego Molina
    • 34d558043d - [build] Update Pinned Browsers for Chrome and Firefox :: AutomatedTester
    • 9da90c6e92 - [py] Add CDP for v96 :: AutomatedTester
    • 818289c24e - [build] Updating to bazelisk 1.10.1 in GitHub Actions :: Diego Molina
    • 37521f3899 - [js] Update downstream deps for JS :: AutomatedTester
    • 853ebf8a20 - [js] update deps in grid :: AutomatedTester
    • 3cbec30ac7 - [py] Disable web component tests against Firefox :: AutomatedTester
    • f5237ff640 - [rb] add CDP support for v96 and remove v93 :: titusfortner
    • afa3a97a3b - [js] add CDP support for v96 and remove v93 :: titusfortner
    • a584509dae - [dotnet] add CDP support for v96 and remove v93 :: titusfortner
    • 2b7e9aa50d - [cdp] remove support for v92 and v93 :: titusfortner
    • f30d67d58b - [java] Updating docs to generate CDP bindings :: Diego Molina
    • a5d1c1e1a1 - [rb] allow #execute_script to return a ShadowRoot :: titusfortner
    • ddc340ce67 - [rb] add tests for shadow root functionality :: titusfortner
    • 154a160e4d - [rb] fix linter error with more whitespace :: titusfortner
    • 0a6260df08 - Fix V96Domains DevToolsVersion property value :: Jim Evans
    • e667fcf082 - Switch to upstream version of Bazel Ruby rules :: Alex Rodionov
    • e5d3644f95 - [py] Setting Chrome for GitHub Actions :: Diego Molina
    • 560a0ae8bd - Support secure WebSocket in DevTools :: Alex Rodionov
    • 80d1a11dbb - Fix a dummy typo that changes the meaning to the opposite :: Alex Rodionov
    • ec914c6d52 - [js] [js] Capture browser console logs when using BiDi onLogEvent api :: Puja Jagani
    • 4e24e999b7 - [js] add support for handling Shadow DOM elements :: AutomatedTester
    • 5b5f3f4c84 - [py] Bump python bindings to 4.1.0 with updated changelog :: AutomatedTester
    • 5d4e79ff76 - [js] Bump Javascript Bindings to 4.1 with updated changelog :: AutomatedTester
    • 4662c6b063 - [rb] update changelog and bump version to 4.1 :: titusfortner
    • 0f71ad79bf - [dotnet] Bump DotNet bindings to 4.1.0 and update changelog :: AutomatedTester
    • 9a5b98eef2 - Fix classloading error in host identifier (#9931) :: Andrei Solntsev
    • 27d2e5eb8d - [java] Running RC tests in their own job :: Diego Molina
    • 607bfe680b - [tours] Add initial tours to get started :: AutomatedTester
    • bf417a60c4 - [java] Running server tests after browser tests :: Diego Molina
    • 4c683dd4b6 - [java] Updating most of the Java deps :: Diego Molina
    • 3244a8b0c9 - [java] Update Java changelog for 4.1.0 :: Diego Molina
    • 19dfc414b8 - [py] Fix return type hint in get_screenshot_as_png (#10060) :: roushikk
    • 2a43011ec7 - Fix typos for Python bindings (#10052) :: Kian Meng Ang
    • 346da0e076 - Added default executable path in service module for (#10057) :: dosas
    • 9cd6c45a21 - Merge branch 'trunk' of https://github.com/SeleniumHQ/selenium into trunk :: Jim Evans
    • 201fad3829 - [dotnet] Handle returning shadow roots from JavaScript :: Jim Evans
    • 5e2fd23c82 - Fix wrong type annotations for "env" it's a dict not a string (#10072) :: Jens Diemer
    • 24a9c50fed - Split OpenTelemetry command (#10009) :: Lyudmil Latinov
    • 5fd073d80e - [py] add warning if people set w3c to false as it may break their tests :: AutomatedTester
    • 336811c7bf - [py] update missing items for changelog for 4.1 :: AutomatedTester
    • 30bfdb24bc - [js] update dependencies :: AutomatedTester
    • fbc391827b - [js] update dependencies as npm audit seemed to miss some :: AutomatedTester
    • d7dfe5ec60 - [py] fix tox warnings :: AutomatedTester
    Source code(tar.gz)
    Source code(zip)
    selenium-dotnet-4.1.0.zip(24.09 MB)
    selenium-dotnet-4.1.1.zip(22.63 MB)
    selenium-dotnet-strongnamed-4.1.0.zip(14.30 MB)
    selenium-dotnet-strongnamed-4.1.1.zip(4.12 MB)
    selenium-html-runner-4.1.0.jar(26.93 MB)
    selenium-html-runner-4.1.1.jar(26.91 MB)
    selenium-html-runner-4.1.2.jar(25.25 MB)
    selenium-html-runner-4.1.3.jar(25.32 MB)
    selenium-html-runner-4.1.4.jar(25.64 MB)
    selenium-java-4.1.0.zip(23.50 MB)
    selenium-java-4.1.1.zip(23.21 MB)
    selenium-java-4.1.2.zip(21.55 MB)
    selenium-java-4.1.3.zip(20.90 MB)
    selenium-java-4.1.4.zip(21.03 MB)
    selenium-server-4.1.0.jar(24.71 MB)
    selenium-server-4.1.0.zip(53.13 MB)
    selenium-server-4.1.1.jar(24.69 MB)
    selenium-server-4.1.1.zip(52.87 MB)
    selenium-server-4.1.2.jar(23.03 MB)
    selenium-server-4.1.2.zip(49.53 MB)
    selenium-server-4.1.3.jar(23.10 MB)
    selenium-server-4.1.3.zip(49.69 MB)
    selenium-server-4.1.4.jar(23.42 MB)
    selenium-server-4.1.4.zip(50.35 MB)
  • selenium-4.0.0(Oct 13, 2021)

    Changelog

    For each component's detailed changelog, please check:

    Commits in this release

    Click to see all the commits included in this release
    • 3a21814679 - [js] bump JS to 4.0.0 :: AutomatedTester
    • 3782f97e75 - [js] Fixes cdp for Chrome and Firefox (#9909) :: Sri Harsha
    • 614a408873 - [py] Bump python to 4.0.0 :: AutomatedTester
    • b97b4069c0 - [dotnet] Fix typo committed by mistake :: Jim Evans
    • ee723da7be - Bump to latest edge release :: Simon Mavi Stewart
    • 77e99f6810 - Add a toJson method to Browser so it becomes easier to use in Capabilities :: Simon Mavi Stewart
    • fcab887059 - [build] Add cdp 95 to python and JS :: AutomatedTester
    • 87e3833c04 - [python] Remove Edge legacy options. (#9908) :: Brandon Walderman
    • 81cf02791a - [dotnet] Update CHANGELOG with last changes :: Jim Evans
    • e41fc34446 - [dotnet] Fix CDP error getting body of redirect responses :: Jim Evans
    • 21163d6085 - Update Java changelog for 4.0.0 :: Simon Mavi Stewart
    • b00c95823c - Use vendor-specific method names for additional Chromium options. (#9906) :: Brandon Walderman
    • fce8ce05cd - [rb] update changelog and bump version for 4.0.0 :: titusfortner
    • 9c13607c98 - [dotnet] Update version resources and CHANGELOG for 4.0.0 release :: Jim Evans
    • eb4c4fc1ba - [dotnet] Add constructor for creating a Cookie instance with all optional arguments (#9361) :: Puja Jagani
    • e6cd2a8df1 - [dotnet] Add infratructure for previously unsupported interaction types :: Jim Evans
    • 5632da3fed - [dotnet] Making SlowLoadableComponent more exentsible :: Jim Evans
    • 54aba4c7dd - [dotnet] SlowLoadableComponent ignores UnableToLoadMessage :: elgatov
    • d3b35ef25f - [dotnet] Remove Edge Legacy options. :: Brandon Walderman
    • 9b1d5f22f8 - [dotnet] Add CDP support for Chromium 95 :: Jim Evans
    • 7f29755e37 - [dotnet] Add ability to monitor DOM mutations :: Jim Evans
    • 11934cfe12 - Closes #9689 jcip for Apache 2 License into selenium source :: Amil Uslu
    • c0963266d5 - Expected condition for checking attribute value (#9881) :: Joe Schulte
    • b8de36fdc3 - [py] implement relative locator for find_element (#9902) :: Titus
    • 18e1d42956 - [grid] Improving Relay service description for docs :: Diego Molina
    • ed5dff7254 - [java] Deprecating USE_CHROMIUM so we can remove it after 4.0 :: Diego Molina
    • dc555bbabc - [js] Updating rules_nodejs to 4.4.0 :: Sri Harsha
    • 776cd675f1 - Update JRuby to 9.3 to support Ruby 2.6 syntax :: Alex Rodionov
    • 48fc40dcdd - Ensure Pry is loaded when running rb:console target :: Alex Rodionov
    • d456395629 - Revert "Remove JRuby-specifiy SocketPoller#listening?" :: Alex Rodionov
    • c9a2ef6a88 - Improve DevTools request interception test by loading different JS :: Alex Rodionov
    • 94c8c111d6 - [dotnet] Restoring protected ElementFactory property :: Jim Evans
    • e1e690cf57 - Add Chrome 95 in selenium-devtools gem :: Alex Rodionov
    • cb873db98e - Amend default node config to allow users to override event bus flags :: Simon Mavi Stewart
    • 81612e88b0 - Add a --hub flag for the Node :: Simon Mavi Stewart
    • b63911ad2a - Add a utility for creating new URIs from strings :: Simon Mavi Stewart
    • 63c95a04f5 - The next release will be 4.0.0 :: Simon Mavi Stewart
    • 5fe1af712f - Apparently we shall release java 4.0.0-rc-3 :: Simon Mavi Stewart
    • c7d75fee9e - Updating java changelog for rc 3 :: Simon Mavi Stewart
    • ca3dea1c32 - [cdp] Add v95, even though it's in beta :: Simon Mavi Stewart
    • b2846723c9 - [JS] Removing unused target for cdpConnection :: Sri Harsha
    • eb2d01765f - [rb] do not camel case Firefox prefs values :: titusfortner
    • 004d91487e - [rb] set defaults for setting Chrome Network Conditions :: titusfortner
    • 44f92ec53f - [rb] update jruby version for tests :: titusfortner
    • 389a938070 - [rb] update github actions test targets to 2.6 :: titusfortner
    • ad886d6e95 - [rb] update Rubocop definitions to target 2.6 :: titusfortner
    • de90992769 - [rb] update minimum Ruby version to 2.6 :: titusfortner
    • f11bd82e90 - [rb] update dependency to address the XML round-trip vulnerability :: titusfortner
    • d46dd323a6 - [py] Fix python generation code for CDP to optionals better :: AutomatedTester
    Source code(tar.gz)
    Source code(zip)
    IEDriverServer_Win32_4.0.0.zip(1.02 MB)
    IEDriverServer_x64_4.0.0.zip(1.10 MB)
    selenium-dotnet-4.0.0.zip(24.01 MB)
    selenium-dotnet-4.0.1.zip(24.04 MB)
    selenium-dotnet-strongnamed-4.0.0.zip(14.25 MB)
    selenium-dotnet-strongnamed-4.0.1.zip(14.26 MB)
    selenium-html-runner-4.0.0.jar(24.77 MB)
    selenium-java-4.0.0.zip(21.33 MB)
    selenium-server-4.0.0.jar(22.56 MB)
    selenium-server-4.0.0.zip(48.80 MB)
  • selenium-4.0.0-rc-3(Oct 8, 2021)

    Changelog

    For each component's detailed changelog, please check:

    Commits in this release

    Click to see all the commits included in this release
    • ae5c7cb81d - [grid] Add error message and exception type if the session does not exist :: Puja Jagani
    • 4a1bc4cf9f - Removing old comment in the PR template. :: Diego Molina
    • 59055b3f97 - [java] Deprecating VERSION to favour BROWSER_VERSION :: Diego Molina
    • 681eae6493 - Add jmx info for OneShotNode :: Simon Mavi Stewart
    • 294d1c92fb - Use the IANA port range when there are less the 5k ports to choose from :: Thomas Flori
    • 22638e01b1 - Support getting timeouts from the driver :: Alex Rodionov
    • 320cd389db - [java] Fixing misspellings in Java docs :: Diego Molina
    • 24ae200b53 - Update Firefox to 93 and Edge to 94 :: Simon Mavi Stewart
    • 3b84577bc1 - Laying the groundwork for 4.0.0 :: Simon Mavi Stewart
    • 3fba1c847f - Update most java deps to latest stable releases :: Simon Mavi Stewart
    • e8937abef8 - Bump OpenTelemetry to 1.6.0 and correct docs :: Simon Mavi Stewart
    • 8e1a3f62cd - Ensure zsh completions are correctly generated :: Simon Mavi Stewart
    • 46de1e6003 - [dotnet] Explicitly remove Expect header :: Jim Evans
    • 0a2b4d979d - [dotnet] Updating version for impending 4.0.0 stable release :: Jim Evans
    • c4e685ac9f - [js] Avoid modifying CDP Grid endpoint :: Puja Jagani
    • 136067e0db - [rb] update changelog and bump version to Selenium 4 RC3 :: titusfortner
    • 6c5c572c4a - [py] Correct deprecations in IE bindings. Fixes #9818 :: AutomatedTester
    • e6080b6f59 - [dotnet] Update version for 4.0 RC3 :: Jim Evans
    • 46d4ee53a8 - [dotnet] Update CHANGELOG :: Jim Evans
    • 6c6a72c3bc - [py] bump to RC 3 :: AutomatedTester
    Source code(tar.gz)
    Source code(zip)
    selenium-dotnet-4.0.0-rc3.zip(19.57 MB)
    selenium-dotnet-strongnamed-4.0.0-rc3.zip(11.74 MB)
    selenium-html-runner-4.0.0-rc-3.jar(24.77 MB)
    selenium-java-4.0.0-rc-3.zip(21.33 MB)
    selenium-server-4.0.0-rc-3.jar(22.56 MB)
    selenium-server-4.0.0-rc-3.zip(48.79 MB)
  • selenium-4.0.0-rc-2(Sep 30, 2021)

    Changelog

    For each component's detailed changelog, please check:

    Commits in this release

    Click to see all the commits included in this release
    • bc5511cbda - Update release instructions to include creating the GitHub release :: Simon Mavi Stewart
    • a98b38f618 - [js] Bump version to 4.0.0-rc-1 :: Sri Harsha
    • 8e6f4fedc2 - [grid] Remove sessions from Redis backed session map on restart :: Puja Jagani
    • 0c7deb4d70 - [py] Bump python to RC1 :: AutomatedTester
    • d67015ed3f - [grid] Make tracing and http-logs flags visible for config-help :: Puja Jagani
    • 7ba66424ec - Updating issue lock configuration :: Diego Molina
    • 315ede4796 - Allowing workflow to be triggered manually [skip ci] :: Diego Molina
    • 5b612526ff - Removing comments to avoid spam [skip ci] :: Diego Molina
    • 3d3a188fd1 - Running lock action every hour [skip ci] :: Diego Molina
    • 1117eeeeac - Adding comment to locked issues [skip ci] :: Diego Molina
    • cf684e40bc - [grid] Moving SessionQueue config to a single class :: Diego Molina
    • 4259e96316 - [java] Bumping to RC 2 :: Diego Molina
    • db2bb9ed96 - [grid] Using session request timeout in the RouterServer :: Diego Molina
    • 46bef06e85 - [py] correct tox warnings :: AutomatedTester
    • 49b49ce5e0 - [py] correct release number for pypi :: AutomatedTester
    • 339bd90549 - Update Selenium Assistant with more tailored message :: titusfortner
    • 24299b2441 - Fix typo in python webdriver for IE (#9801) [skip ci] :: Jacob Walls
    • 0101ad409f - [js] Update connections to devtools so it works in Firefox and Chrome :: AutomatedTester
    • ee61e946f3 - Allows None to be set for the sameSite attribute (#9771) :: GPT14
    • bdfb31b111 - Bump Edge to v93 :: Simon Mavi Stewart
    • 4ac8da53c5 - Use a read/write lock instead of synchronized in the CDP connection :: Simon Mavi Stewart
    • 8a2e777b2c - [cdp] Intercept requests and responses in NetworkInterceptor :: Simon Mavi Stewart
    • 336fa13731 - Minor cleanups :: Simon Mavi Stewart
    • e2eafcf9c5 - Support mutating responses in network interception :: Alex Rodionov
    • 826f47f8c6 - [js] Updating rules_nodejs to 4.1.0 :: Sri Harsha
    • c146025360 - [grid] Organising config deps [skip ci] :: Diego Molina
    • 147790713d - [grid] Initial support for non browser based WebDrivers :: Diego Molina
    • 319fd1afd7 - [grid] Moving grid docker package to a more logical location. :: Diego Molina
    • eef1f40aa8 - Rework network interception API to allow mutating request/response :: Alex Rodionov
    • 025d96e529 - [grid] Improving DefaultSlotMatcher in case browserName is empty. :: Diego Molina
    • f2d458f848 - [grid] Fixing a log output [skip ci] :: Diego Molina
    • 29c01fd5ef - [grid] Improving matcher for the RelaySessionFactory :: Diego Molina
    • a4f8c86109 - Silence CDP error upon fetching body for 301 response :: Alex Rodionov
    • 968a87ab29 - [cdp] Fetch.requestPaused doesn't handle redirects well :: Simon Mavi Stewart
    • e703235071 - Roll browsers and drivers to latest versions :: Simon Mavi Stewart
    • 383281df8b - [grid] Updating example for driver-configuration :: Diego Molina
    • 859ea11b36 - [grid] Delete Jaeger tracing class since OpenTelemetry autoconfiguration handles it :: Puja Jagani
    • c7d0f059bb - Update java changelog for rc2 :: Simon Mavi Stewart
    • 6bab9efd89 - [grid] Using correct default value for retry interval. :: Diego Molina
    • 47e47d91fa - [grid] Using new session request retry interval :: Diego Molina
    • a1c9131d2c - [rb] allow Options#add_option to set top level options if they use w3c compliant namespace :: titusfortner
    • 1cdf89caff - [rb] allow Options#add_option to accept a Hash as well as ordered pairs :: titusfortner
    • 37973575db - [grid] Removing unneeded variable :: Diego Molina
    • a03780c3a9 - [grid] Avoiding Nodes to move around in the UI :: Diego Molina
    • 17c0c01888 - [grid] Adding Android logo :: Diego Molina
    • 04c12093f1 - [grid] Showing more stereotype details in the Grid UI :: Diego Molina
    • ca58c3b83f - [grid] Enabling live view for Dynamic Grid :: Diego Molina
    • 0a5b2d8e74 - Allow remote webdrivers that are firefox to install extensions :: Simon Mavi Stewart
    • 9c9dccf66c - [java] only augment with matching augmenters :: titusfortner
    • 8345a87bb5 - [rb] add error messages for when devtools is not supported :: titusfortner
    • 01b672ed2d - [grid] Filter out reserved sessions while displaying in Grid UI. Display the ones with an actual session id only. :: Puja Jagani
    • a45202d46b - [graphql] Use sessions with session ids to get the session count :: Puja Jagani
    • 7e11db8550 - [js] Implement network request interceptions :: AutomatedTester
    • 9cc81ecbcc - [js] Fix typo in devtools test :: Puja Jagani
    • 41dfb46462 - [js] Add a check for Grid CDP endpoint :: Puja Jagani
    • 2c071c84c2 - [py] Fix type hint on chrome option method (#9840) :: Alex
    • b86d8475b4 - Add methods to options classes for w3c compliant capabilities (#9828) :: Titus
    • c3017bae3b - WebDriver Bidi specifies "webSocketUrl" as a capability name :: Simon Mavi Stewart
    • 58c925dee4 - Update java changelog :: Simon Mavi Stewart
    • 46fc208fc1 - [grid] Consider max-session value while selecting the slot and identifying Node capacity (#9838) :: Puja Jagani
    • 15dfc62576 - Allow commands to be loaded via the ServiceLoader (#9854) :: Simon Stewart
    • f76702247c - [java] add tests for Firefox HasExtensions functionality :: titusfortner
    • 82cf0736da - Allow Firefox full page screenshot functionality to be augmented by RemoteWebDriver :: titusfortner
    • 11194a7c5d - FirefoxDriver needs to implement HasFullPageScreenshot interface not just the method :: titusfortner
    • 962db2616a - Implement Firefox endpoint for setting context and allow to be Augmented :: titusfortner
    • 9e4122b4bb - Remember to add AddContext commands to the Firefox CommandExecutor :: Simon Mavi Stewart
    • 3971e299b3 - Extend the browsers that will be augmented to provide webstorage :: Simon Mavi Stewart
    • d1fd313907 - Adding more tests for relative locators :: Simon Mavi Stewart
    • defe1e3a36 - [js] Skip initKeyEvent usage when Gecko is verion 93 or later. :: AutomatedTester
    • f8e643f72f - [js] Annoying it's on bot.userAgent not goog. :: AutomatedTester
    • e49e62132e - Remove Safari specific new window feature which no longer works; w3c compliant endpoint is available :: titusfortner
    • 2a03bdea88 - [dotnet] Add transformation for network responses via CDP :: Jim Evans
    • 301132d7a3 - [dotnet] Restore removed RemoteWebElement class :: Jim Evans
    • 2b67ecee62 - [dotnet] Add ability to disconnect a CDP session :: Jim Evans
    • 9b1a49fc73 - Require "uri" in Selenium::Webdriver container module (#9827) :: David Shaffer
    • 9976521655 - [rb] remove deprecated constant :: titusfortner
    • 84fad5e827 - fix bug preventing setting a timeout because the capability response is null :: titusfortner
    • b4f8e9f095 - [cdp] replace v91 with v94 :: titusfortner
    • f610af6787 - [dotnet] update devtools tests to use V93 :: titusfortner
    • ece979a3c3 - [cdp] update ruby, python and JS to add support for v94 and remove support for v92 :: titusfortner
    • 5a6504a32c - Move NetworkInterceptor to main devtools package :: Simon Mavi Stewart
    • 702b1c7c99 - [dotnet] Rename TerminateDevToolsSession to ResetDevToolsSession :: Jim Evans
    • 790d746d2c - [dotnet] Version bump for development toward 4.0 RC2 :: Jim Evans
    • a254c33b96 - update pinned browsers and drivers; chromium v94, Geckodriver v0.30 :: titusfortner
    • d047b4d087 - [rb] move new window functionality into TargetLocator to match other bindings :: titusfortner
    • 2146a95291 - [rb] after 10 years, these are no longer @api beta :: titusfortner
    • 677b1ecd05 - Ensure CDP socket is closed when driver quits :: Alex Rodionov
    • 2e3c429c6b - [rb] implement chromium casting functionality :: titusfortner
    • 8aa962de46 - [rb] missed adding the HasCasting class :: titusfortner
    • 2086f382c5 - [rb] implement chromium launch app functionality :: titusfortner
    • 279e41fd35 - [grid] Matching for prefixed platformVersion :: Diego Molina
    • f8dad59003 - [grid] Adding match logic for extension caps :: Diego Molina
    • 9d55d474df - [dotnet] Fixing an old copy&paste for docs :: Diego Molina
    • 73d6bea82e - [py] implement chromium specific endpoint for deleting network conditions :: titusfortner
    • fc05f3a89e - [py] implement chromium specific endpoint for setting permissions :: titusfortner
    • 20b5cdb70d - [rb] add yardoc details for new driver extensions :: titusfortner
    • 5eaa6e48a0 - [rb] implement endpoint for deleting network conditions :: titusfortner
    • 39dec02867 - [rb] implement endpoint for adding permissions in Chrome :: titusfortner
    • b4c8f20b90 - [rb] remove variable that's been unreachable since 2010 :: titusfortner
    • 10bcce1d50 - expected_conditions and wait modules raises InvalidSelectorException for invalid xpaths (#9805) :: GPT14
    • d88bb08070 - [rb] implement the Firefox context endpoints and functionality :: titusfortner
    • 31027c8835 - [cdp] Add support for v94 and remove v93 :: Simon Mavi Stewart
    • abfe9f2ee6 - Correct comment. No logical change :: Simon Mavi Stewart
    • 746f2270d4 - Aggregate and cleanup all CDP event threads on quit :: Alex Rodionov
    • 016eded1de - [rb]: Standardise driver logging output (#9850) :: Luke Hill
    • a3e4d1bd56 - Close CDP socket listener thread before closing socket :: Alex Rodionov
    • ba05dd906e - [java] Removing deprecated safari.options :: Diego Molina
    • 0dcffa208c - [grid] Choosing the driver builder with highest score :: Diego Molina
    • 184ac7828e - [grid] Adding SafariTechPreviewDriverService :: Diego Molina
    • 2835393e52 - Add w3c capabilities to Python options (#9870) :: Titus
    • 644988126a - Allow the remote server to handle relative locators :: Simon Mavi Stewart
    • c3450b118d - Run buildifier over the tree :: Simon Mavi Stewart
    • fa37d18d49 - NeedsLocalEnvironment wasn't being checked anywhere :: Simon Mavi Stewart
    • ddfcd94f12 - [cdp] Handle the case when the first window closes :: Simon Mavi Stewart
    • b6ce2cf551 - Remove hard-coded ports from tests :: Simon Mavi Stewart
    • 15c48c4893 - Remove tests we were keeping for reference only :: Simon Mavi Stewart
    • fd5af83584 - Remove hard-coded port from test :: Simon Mavi Stewart
    • 8d0eb038ec - Remove hard-coded port from test :: Simon Mavi Stewart
    • 31cb2465d8 - Remove unused variable in test :: Simon Mavi Stewart
    • e8e1bc42e7 - [cdp] Handle the case where the original endpoint is unreachable :: Simon Mavi Stewart
    • 95776ce287 - Remove unused import :: Simon Mavi Stewart
    • 6ec36b76f7 - Minor text change. No logical change :: Simon Mavi Stewart
    • 3b49d75005 - Ignore failing firefox test :: Simon Mavi Stewart
    • 71f6be98cb - Make sure the emulated rc tests actually run :: Simon Mavi Stewart
    • c1719bef72 - [dotnet] Update supported version of CDP to 94, remove 92 :: titusfortner
    • 728c746cd1 - Pick a random port for the firefox cdp implementation to listen on :: Simon Mavi Stewart
    • b398f8f395 - Mark passing tests as passing for Edge :: Simon Mavi Stewart
    • 25d1037ae8 - Removing tests that browsers have rendered obsolete :: Simon Mavi Stewart
    • 3b2e16ce41 - [dotnet] Fixing build :: Jim Evans
    • 12a14a204a - Create interfaces for RemoteWebDriver to use with Augmenter (#9856) :: Titus
    • c62dbf9d88 - Clean up some stylistic nits. No logical changes :: Simon Mavi Stewart
    • 82c5a1185e - Remove unnecessary public keyword from interfaces. No logical changes :: Simon Mavi Stewart
    • bc5aed6689 - Remove unused imports. No logical changes :: Simon Mavi Stewart
    • 9e8c7b3ecd - [rb] use file detector for uploading add-ons if one is set :: titusfortner
    • 68cd181d6c - [py] Force free ports for cdp in geckodriver :: AutomatedTester
    • 47777fe06e - [py] Add new websocketUrl capability :: AutomatedTester
    • 05a3a5ecc4 - [js] Add new websocketUrl capability :: AutomatedTester
    • e6366da016 - Replace BrowserType with a Browser interface :: Simon Mavi Stewart
    • eeba903891 - Fix the EdgeOptionsTest :: Simon Mavi Stewart
    • 05f7b955b9 - Remove test ignored by all browsers :: Simon Mavi Stewart
    • 33ecb854b0 - Fix up assumption in the ChromeFunctionalTest :: Simon Mavi Stewart
    • ad13b0f3e1 - Annotate or fix some edge tests :: Simon Mavi Stewart
    • 9f02125ad2 - [dotnet] Make CDP sessions autodetect close of initial attached target :: Jim Evans
    • 5e91eb5b6a - [rb] fix tests to get passing :: titusfortner
    • d33b8848ae - [rb] update changelog and bump version to Se 4 RC2 :: titusfortner
    • 1dacd2138a - [dotnet] Remove obsolete test :: Jim Evans
    • fe91134b3e - [dotnet] Add Bidi-compliant webSocketUrl capability :: Jim Evans
    • a560c4296e - [dotnet] Add version-independent method for overriding user agent via CDP :: Jim Evans
    • e6fb3feeb6 - [dotnet] mark deprecated chromedriver commands as obsolete and implement new preferred command :: titusfortner
    • d2636d763c - [dotnet] Move UserAgent class to main namespace :: Jim Evans
    • c66b1ea6bc - [dotnet] Restore ability to add headers to WebDriver HTTP commands :: Jim Evans
    • b8caa25c1e - implement getting context from Firefox driver :: titusfortner
    • 0f95b2788d - [dotnet] Add --websocket-port command line argument for geckodriver :: Jim Evans
    • 604c23b3a5 - [rb] add web_socket_url to list of W3C Options :: titusfortner
    • ab6a867489 - [dotnet] implement chrome and edge support for casting to devices :: titusfortner
    • 232bd584b8 - [dotnet] implement ability to launch chromium application :: titusfortner
    • 90e8e61d55 - [dotnet] implement ability for Chrome and Edge to set applicable permissions on browser :: titusfortner
    • 45a06f4ede - [dotnet] implement getting the context of Firefox commands :: titusfortner
    • 81679ca6bd - [dotnet] implement getting and setting permissions on Safari :: titusfortner
    • cde3c8a39d - [dotnet] implement ability to open Safari inspector :: titusfortner
    • c2e6b58b44 - [dotnet] missing semicolon preventing build :: titusfortner
    • 60b2cff330 - [rb] add android specific methods to Chrome, Edge and Firefox :: titusfortner
    • 5f1a0f899f - Use FileDetector to install Firefox addons if one is set on the driver (#9872) :: Titus
    • 9a767b5f25 - [js] Restore withCapabilities() to ensure backward compatibility :: Puja Jagani
    • 1c817b56fa - [js] Allow builder to set a single arbitrary capability (#9857) :: Puja Jagani
    • dc59524fe8 - [dotnet] Coercing return type of GetCastSinks() to proper datatype :: Jim Evans
    • 08ddd4da3c - [dotnet] Adding support for Firefox and Chromium Android options :: Jim Evans
    • cd12f66955 - [dotnet] Fixing doc string for Network Conditions methods :: Jim Evans
    • 992cef28dd - [dotnet] Fix TouchActions Flick overload :: Jim Evans
    • cb0e61525c - [js] Fix builder test :: Puja Jagani
    • 73807b6174 - Add android options to FirefoxOptions :: Simon Stewart
    • b95aa5a3ea - Add android options to chromium options. :: Simon Stewart
    • 4d981f86c8 - Minor tweaks to make the compiler happier. No logical changes :: Simon Mavi Stewart
    • 7861733f14 - [js] updating rules_nodejs to 4.3.0 :: Sri Harsha
    • 48d139a04a - [rb] update changelog for RC2 :: titusfortner
    • 4cde9ffe32 - Update java changelog :: Simon Mavi Stewart
    • 17bc2e641e - [grid] Use a valid json for error message :: Puja Jagani
    • 2ddef73edf - [py] Bump version to RC 2 :: AutomatedTester
    • c42c7a49eb - [js] Bumping to RC 2 :: AutomatedTester
    • 8d1e4aa5ae - [dotnet] Changelog updated for RC 2 :: AutomatedTester
    Source code(tar.gz)
    Source code(zip)
    selenium-dotnet-4.0.0-rc2.zip(19.56 MB)
    selenium-dotnet-strongnamed-4.0.0-rc2.zip(11.74 MB)
    selenium-html-runner-4.0.0-rc-2.jar(23.30 MB)
    selenium-java-4.0.0-rc-2.zip(19.30 MB)
    selenium-server-4.0.0-rc-2.jar(21.09 MB)
    selenium-server-4.0.0-rc-2.zip(45.29 MB)
  • selenium-4.0.0-rc-1(Sep 1, 2021)

    Changelog

    For each component's detailed changelog, please check:

    Commits in this release

    Click to see all the commits included in this release
    • d6bb232e52 - [dotnet] Update supported version of CDP to 93, remove 91 :: Jim Evans
    • 618e8aaeb0 - [rb] bump devtools version to 0.93 :: titusfortner
    • 7926f2d720 - Remove cdp v91 from the java bindings :: Simon Mavi Stewart
    • cda568f5bf - Add CDP v93 :: Simon Mavi Stewart
    • 695f096b75 - Bump chromium version to v93 :: Simon Mavi Stewart
    • 2955b00620 - [rb] bump version to 4.0.0.rc1 :: titusfortner
    • 76683e1ecc - [cdp] replace v91 with v93 in bazel files for Python, Ruby and JS :: titusfortner
    • 1b236f2f62 - [cdp] add cdp v93 to and remove v90 from the project :: titusfortner
    • 684948661b - [grid] Delete all session information from Redis backed session map :: Puja Jagani
    • 26d8ff62f4 - [js] Updating rules_nodejs to 4.0.0 (#9774) :: Sri Harsha
    • 296368b33a - Update SQL table creation fields :: Puja Jagani
    • 7037a70ec5 - [grid] Password dialog when the VNC stream is protected :: Diego Molina
    • 13c7ef08fa - [grid] Adding component to handle pwd dialog for VNC :: Diego Molina
    • 3762f331e1 - Update java changelog :: Simon Mavi Stewart
    • af45b5d36a - We no longer push java artifacts to google storage :: Simon Mavi Stewart
    • d05473f4b1 - Add instructions for releasing the java pieces of Selenium :: Simon Mavi Stewart
    • a87302a504 - Update publishable targets :: Simon Mavi Stewart
    • 707cf39d71 - [grid] Purge sessions on Node restart for Jdbc backed session map :: Puja Jagani
    • 9bb5163e00 - Bump browsers: Firefox to 91.0.2, Edge to 92.0.902.84 :: Simon Mavi Stewart
    • 95c78af8c1 - [grid] Add node removed listener to Redis and Jdbc session map implementations :: Puja Jagani
    • 97b6c1b976 - [cdp] Remove cdp versions 88, 89, and 90 :: Simon Mavi Stewart
    • e92b16f083 - Bump OpenTelemetry to 1.5.0 and update docs :: Simon Stewart
    • fdaaf0c2c8 - Bump most java dependencies :: Simon Stewart
    • f247a21f96 - Avoid creating an intermediate list in the toml config :: Simon Stewart
    • b87e5922be - Bump bazel to 4.2.0 :: Simon Stewart
    • 95bc5b5573 - [grid] Allowing webdriver executable to be configured for drivers. :: Diego Molina
    • 79b76445e1 - [grid] Fixing a couple of failing tests. :: Diego Molina
    • 586affe0cf - [grid] TomlConfig returns sorted config details :: Diego Molina
    • 8905eb205a - [grid] Making only name and stereotype be mandatory in nodeConfig :: Diego Molina
    • e571f898d2 - [dotnet] Support assembly: Make IWebDriver extension methods handle wrapped drivers :: Jim Evans
    • 5f20319f1c - [dotnet] Fix PrintOptions to handle page ranges :: Jim Evans
    • 26b625ab0f - [dotnet] Fix HttpCommandExecutor events :: Jim Evans
    • cfde816c32 - [dotnet] Fix compile errors in InternetExplorerOptions :: Jim Evans
    • eb31a2c6ff - [java] Ignoring a test for Firefox while it is debugged. :: Diego Molina
    • d54897523f - [java] Fixing a test since the returned code changed :: Diego Molina
    • 8b70122a7c - [grid] Splitting regular tasks in 3 for the LocalNode :: Diego Molina
    • 9b2da60ed7 - [java] Fixing an old test in WebDriverBackedSeleniumLargeTest :: Diego Molina
    • ea41b757bd - [grid] Adding disableBuildCheck as a property. :: Diego Molina
    • 86f65a788c - Fixing dependencies for test :: Diego Molina
    • b02f8f7214 - Improving shouldBeAbleToAddMultipleSessionsConcurrently by adding an active wait. :: Diego Molina
    • 66a876aabe - [java] Fixing a test broken by 572434ee4988ba64d57c0fc6bb491c2a8224747d :: Alexei Barantsev
    • 0d11ab93a7 - [java] do not set unexpected alert value in Options by default :: titusfortner
    • fcbfb3a4c0 - update IE options class in each language to match the currently supported capabilities in the IE Driver :: titusfortner
    • 182aa41636 - Updating urls to point to our downloads page [skip ci] :: Diego Molina
    • c684f99e5b - [rb] use require instead of autoload for server_error.rb since ServerError isn't namespaced with Remote and doesn't have circular dependency issues :: titusfortner
    • fec3399b79 - Add file path examples to logging flags :: Puja Jagani
    • 89b6c9a673 - Handle parse exception while parsing toml config :: Puja Jagani
    • 018c6628b4 - Allow adding multiple examples for config help :: Puja Jagani
    • 324535a7e6 - Adding more updates to .NET CHANGELOG for 4.0 RC1 :: Jim Evans
    • e867b31e9f - Dispose HttpRequestMessage and HttpResponseMessage objects when making a http call :: Nikolay Borisenko
    • 57b5345167 - Add a Dockerfile that provides an env to hack on Selenium :: Simon Mavi Stewart
    • 4f95eff8fb - Bump standalone-{chrome,firefox} used in the deploy images :: Simon Mavi Stewart
    • 572434ee49 - Slightly better error message when decoding JSON strings :: Simon Mavi Stewart
    • 42c33e5473 - Update .NET CHANGELOG for impending 4.0-RC1 release :: Jim Evans
    • 3d65ba06d2 - [dotnet] Update available CDP versions :: Jim Evans
    • 40936c627d - [js] Removing scroll argument as it is not ever used :: AutomatedTester
    • 3ab4cc4fce - [js] Updating rules_nodejs to 3.8.0 :: Sri Harsha
    • 72ffec9d2a - Specify that the "find_element_by_* ..." warning is a deprecation warning (#9700) :: Leon Shams
    • 279f0d66ee - Deprecates withCapabilities method and removes tests (#9701) :: GPT14
    • b934a75fe5 - [grid] Delete existing sessions if the Node is restarted :: Puja Jagani
    • b7982ae779 - [grid] Add heath check for LocalDistributor test :: Puja Jagani
    • bfce42bc10 - [bazel] Automate updating the pinned browsers :: Simon Stewart
    • 3cbdc1a729 - [dotnet] Enable script pinning :: Jim Evans
    • fb689113ff - [dotnet] Fixing Visual Studio prebuild scripts :: Jim Evans
    • a4c3e3b8fb - [grid] Ensure a second node is able to register itself :: Puja Jagani
    • b09ab9fb8a - [grid] Remove a duplicate test. No logical changes. :: Puja Jagani
    • 1f78fb871d - [devtools] add some quick links to the readme for locating the necessary files when adding new devtools versions :: titusfortner
    • 0ff878de4c - Bump pinned firefox, edge, and chrome to latest stable releases :: Simon Stewart
    • 1e0058ff49 - [java] Removing unused imports. [skip ci] :: Diego Molina
    • 7618b2b689 - [java] Stopping sessions when the Node is gracefully shutdown :: Diego Molina
    • f3b307c79e - [dotnet] Rename RemoteJavaScriptEngine.cs source file to JavaScriptEngine.cs :: Jim Evans
    • 6bf216ef76 - [dotnet]: Adding ability to use By object with relative locators :: Jim Evans
    • 5496386dd3 - Bump .NET assembly and CDP versions :: Jim Evans
    • f40638f241 - Updating a few links to the new site. [skip ci] :: Diego Molina
    • c3b768d277 - [build] update rules_python to 0.3.0 :: AutomatedTester
    • 09846b5ee7 - [js] Update bazel CDP versions support :: AutomatedTester
    • d08c4bfbd9 - [grid] Update JS deps :: AutomatedTester
    • 76371d79ba - [js] Update dependencies :: AutomatedTester
    • 0a24aef4fe - [grid] Fix flaky SessionCleanup tests :: Puja Jagani
    • 58a55ce866 - [grid] Stopping a session by invalidating its cache entry :: Diego Molina
    • 5c977d49ae - [grid] We do not need to stop the session again :: Diego Molina
    • d33e28f274 - Add specs for relative locator using other root locator than tag_name :: Alex Rodionov
    • 3dd70c2e2c - Updating IE driver resources and prebuilts to 3.150.2.0 :: Jim Evans
    • d00efc12f9 - Updating IE driver source to compile against Windows 10 SDK :: Jim Evans
    • e9d195e082 - Updating JavaScript automation atoms for IE driver :: Jim Evans
    • 0bd2623d80 - [grid] Using shmSize instead of mounting /dev/shm :: Diego Molina
    • a7102f2a54 - [grid] Fixes file upload for Dynamic Grid :: Diego Molina
    • 9484cacc55 - [js] expose withLocator method at the top level :: AutomatedTester
    • 63c74ab484 - [grid] Clean up sessions once Node is purged :: Puja Jagani
    • 60bd1127ab - [grid] Fire event when Node server shuts down :: Puja Jagani
    • 3376af0ddf - [grid] Add Node removed event :: Puja Jagani
    • 1fad80a480 - [grid] Purge Nodes if health check fails consistently :: Puja Jagani
    • c498dad8c5 - [rb] set a default file detector for Remote Driver :: titusfortner
    • 702b3aae73 - Move java sources and tests into a single tree (#9710) :: Simon Stewart
    • 6665715c8b - Fix proxy unit tests after 7e69b3d634 :: Alex Rodionov
    • 682c6080d2 - Fix
      endings :: AutomatedTester
    • 7783486500 - [docs] Update Readme on how to build each of the bindings :: AutomatedTester
    • ab99331fe4 - Add docker max sessions flag (#9688) :: Puja Jagani
    • 04cc1a891a - [py] clean up imports :: AutomatedTester
    • 2aea999ba1 - [py] Use options when passing things to remote webdriver instead of capabilities :: AutomatedTester
    • f3b5d5e03f - [py] Correct deprecation message in IE handling code :: AutomatedTester
    • f0149077f1 - Close InputStream after creating the new session payload :: Puja Jagani
    • 377b8bbad1 - [cdp] Avoid using Void.class as a type :: Puja Jagani
    • 7a63077ea4 - Close DriverService and DriverCommandExecutor executor on quit. Fixes #9666 :: Puja Jagani
    • 9e6eaf91f6 - [py] Remove v88 from the CDP support :: AutomatedTester
    • 41dce806c9 - [py] Rewrite the logging module for bidi connections :: AutomatedTester
    • 7e69b3d634 - [rb] unset capabilities should not raise KeyError when method is called :: titusfortner
    • 1593b70d44 - [rb] update CDP versions to v90, v91, v92 :: titusfortner
    • 497cde3d82 - [py] remove non-w3c compliant parameters from default capabilities :: titusfortner
    • 13114e1f46 - [build] Only run JS workflow when there is a JS or dependency change :: AutomatedTester
    • 094ca6e5a1 - [build] Only run Python workflow when python or atoms change :: AutomatedTester
    • ad11a61ceb - [js] Add Enable Mobile feature for Firefox :: AutomatedTester
    • e5968b6c1f - [js] Add the ability to do Relative Locators with all By types :: AutomatedTester
    • 8c217cff7e - [js] Add default Opera capabilities. Fixes #9654 :: AutomatedTester
    • 23eefa8ae9 - [py] Run type checks in CI and report typing coverage to codecov (#9523) :: Oleg Höfling
    • e2866fc10f - [JS] Add support for ChromeDriver --enable-chrome-logs (#9575) :: Mark Stacey
    • 6c325538ed - [grid] Ignoring if the directory already exists :: Diego Molina
    • de8ac457cf - [py] PEP 484 type hints for selenium.webdriver.remote.errorhandler (#9605) :: Oleg Höfling
    • a67878e997 - [py] Disable test for remote that is disabled for firefox. Issue is in Firefox :: AutomatedTester
    • 2c8c4ffc7e - Add the debuggerAddress option to chromium.js (#9561) :: Brandon Walderman
    • b0a4a29cb2 - add http client options (#9638) :: Dharin Shah
    • 2e538533dd - [py] Handle first/always match better when it hits lists/dicts. Fixes #9538 :: AutomatedTester
    • 7afecdc8c1 - [py] Update CDP support to drop v89 and add v92 :: AutomatedTester
    • 817be45ded - Reduce Distributor test flakiness :: Puja Jagani
    • b69d4cb4d1 - [grid] Ensure the RemoteNode can reach the LocalNode during tests :: Puja Jagani
    • 59962fea7e - [cdp] Remove old CDP versions from the java bindings :: Simon Stewart
    • 5efb6606ab - [cdp] Add v92 to the project and the java bindings :: Simon Stewart
    • ca0f141793 - Bump browsers to latest stable versions :: Simon Stewart
    • 69fbf2a64c - Pin Node version to one that should work on Apple Silicon :: Simon Stewart
    • 74745cf081 - [grid] Improving test configuration to use only the driver needed :: Diego Molina
    • cc4afffa30 - [grid] Code styling and removing unused import :: Diego Molina
    • 77788e020c - [py] fix type hints for selenium.webdriver.remote.file_detector (#9647) :: Oleg Höfling
    • 6b2edbc990 - [build] move to python 3.7.10 :: AutomatedTester
    • c9a18b956b - [py] partial revert of #9606 :: AutomatedTester
    • 2c94ad31fa - [py] correct tox warnings :: AutomatedTester
    • 4c382be052 - Handle empty inputs for JSON better :: Simon Stewart
    • 960e1688b4 - [grid] Improving concurrency session creation by not having a unique instance :: Diego Molina
    • dfa7c79a66 - [grid] removing content-length header for GET requests :: Diego Molina
    • 8c03b6d668 - [java] improving removeHeader to be case insensitive :: Diego Molina
    • 2743584764 - [js] chore: fix linter (#9639) :: Dharin Shah
    • b6851f8b4f - Add //rb:console target which starts interactive REPL :: Alex Rodionov
    • 873728e37e - Use duck-typing for pinned script execution :: Alex Rodionov
    • 8d656fe2dd - Allow to pin scripts to pages :: Alex Rodionov
    • d44b41b54e - Implement Shadow DOM API :: Alex Rodionov
    • ee0193db29 - Avoid throwing an NPE in the Grid UI :: Simon Mavi Stewart
    • 9049a6f8f2 - Run buildifier. No logical changes :: Simon Mavi Stewart
    • 0795e78559 - Ensure that default healthcheck duration is less than node timeout duration :: Simon Mavi Stewart
    • 9b1f2d792b - Fire heartbeat event immediately upon starting :: Simon Mavi Stewart
    • 7421ba6f5c - The GridModel is an implementation detail, so not needed in constructors :: Simon Mavi Stewart
    • 4287762e78 - Start new sessions from the distributor in background threads :: Simon Mavi Stewart
    • 7bed535e7e - Expose the pinned grid build target. No logical changes :: Simon Mavi Stewart
    • 2d817e5d95 - Remove test-specific debug class :: Simon Mavi Stewart
    • 86eeec2254 - Add test to verify the distributor creates sessions in parallel :: Simon Mavi Stewart
    • 3f896ba2d4 - Add a target to make it easy to run the Grid with pinned browsers :: Simon Mavi Stewart
    • a0e9c2e8b2 - chore: cleanup (#9635) :: Dharin Shah
    • bc69a20c83 - [js] Updating edge.js to extend chromium.driver (fixes #9626) :: Sri Harsha
    • 513114904e - [js] Updating rules_nodejs to 3.7.0 :: Sri Harsha
    • 277b581aef - [grid] Start heartbeat after registering the Node :: Puja Jagani
    • 2ea9026477 - [py] PEP 484 type hints for selenium.webdriver.remote.file_detector (#9606) :: Oleg Höfling
    • 223a4f6bd0 - Fix deprecation warnings for Safari (#9577) :: Leon Shams
    • e46dba5318 - [py] PEP 484 type hints for selenium.webdriver.common.print_page_options (#9608) :: Oleg Höfling
    • d2333a2049 - [grid] Ensure a Node is purged as per the heartbeat period :: Puja Jagani
    • 8480b8e723 - [py] Allow 0 coordinates for the window position. Fixes #9574 :: AutomatedTester
    • 2530e56e0c - [py] Correct Typo in change log :: AutomatedTester
    • 8207197b59 - [.NET] Correct typo in change log :: AutomatedTester
    • 0abd50117e - Remove final mutable state from NodeStatus :: Simon Stewart
    • d388aa8587 - Remove most mutable state from NodeStatus :: Simon Stewart
    • 335890fe4d - Removing redisson dependency on the data package :: Simon Stewart
    • 0c79e86164 - Putting the GridModel back into the core Distributor package :: Simon Stewart
    • 766559eac8 - Rewrite LocalGridModel to avoid needing to mutate state :: Simon Stewart
    • 730cdc2656 - Finishing removing duplicate accessor method :: Simon Stewart
    • abce1cd6cf - Remove duplicate accessor method :: Simon Stewart
    • 45bd6ac541 - Remove aggregating interface :: Simon Stewart
    • 87fdef6ee6 - The aggregating interface should not be necessary :: Simon Stewart
    • ebd0998cde - Config settings do not use -- in their names :: Simon Stewart
    • 4798b008d2 - Make decorated drivers and elements implementing the wrapping interfaces :: Simon Stewart
    • 1e3cc6b5f6 - [java] inlining variable creation, no logical changes :: Diego Molina
    • 91e313a498 - [http-client] Allow AsyncHttpClient to manage the lifecycle of the timer. :: Puja Jagani
    • 9d148a3dfc - Update package.json to include repository key (#9603) :: Microsoft Provenance Contributions
    • 3a267b5d9e - Release selenium-devtools 0.91.1 :: Alex Rodionov
    • 14800bbe94 - Send the heartbeat while the node is running :: Simon Stewart
    • e1d15c49e2 - Implement ShadowDOM APIs in the Java bindings :: Simon Stewart
    • 548f4b8388 - Set the bazel language level to 11 for the plugin :: Simon Stewart
    • 5d58b8e145 - Use a single executor service for DriverService and DriverCommandExecutor :: Puja Jagani
    • 23ece4f646 - Bumping to 4.0.0-rc-1 :: Diego Molina
    • 673c678308 - [grid] Showing the queue size on the left panel, Grid UI :: Diego Molina
    • 4f0b218abf - [grid] Fixing Grid UI unit tests :: Diego Molina
    • ee1d50f8e2 - [grid] Displaying live view in the UI :: Diego Molina
    • 89af50f8f8 - [py] PEP 484 type hints for selenium.webdriver.common.utils (#9568) :: Oleg Höfling
    • e60c097fb6 - [py] PEP 484 type hints for selenium.webdriver.remote.utils (#9525) :: Oleg Höfling
    • 44daa3a415 - [grid] Updating dependencies for Grid UI. :: Diego Molina
    • 3e3eee5323 - [grid] Routing VNC websockets through the Grid :: Diego Molina
    • 4733eeabe9 - [grid] Retaining to increase the reference count once and then close the ws properly. :: Diego Molina
    • 5385a15453 - [grid] Modifying ws upgrade to handle VNC client. :: Diego Molina
    • 38c2b3ff8b - [grid] Avoid memoizing Distributor status for GraphQL queries :: Puja Jagani
    • 2263fb753d - [grid] Remove new session event listener from Distributor. Shutdown executors in Distributor :: Puja Jagani
    • de48e0876d - Updating nuget.exe to latest version :: Jim Evans
    • 952c538c68 - [grid] Fix Redis Session Map test :: Puja Jagani
    • 2a8aaccbcf - [grid] Update Redisson client connection pool default values :: Puja Jagani
    • 5c92f4d869 - [grid] Adding vnc endpoints for live view in the UI :: Diego Molina
    • 20eb10fc74 - [java] Updating link to ChromeDriver :: Diego Molina
    • 63228848f6 - [grid] Adding tests for VNC detection option :: Diego Molina
    • 9717d403a8 - [grid] Adding option to detect if VNC is available or not :: Diego Molina
    • 2cf47f3f12 - [grid] Fix Redis Session Map test :: Puja Jagani
    • 9b5c7b954e - [grid] Add tests for using local distributor with Redis Grid Model :: Puja Jagani
    • 06d22849fc - [grid] Remove unused imports :: Puja Jagani
    • 192aed612b - [grid] Add Redis GridModel implementation :: Puja Jagani
    • 5a94acd39b - [grid] Update GridModel interface access modifiers :: Puja Jagani
    • 3161687625 - [grid] Add Redis grid model test package. Update build files. :: Puja Jagani
    • c0abe97d20 - [grid] Make NodeId, Session and Session id serializable :: Puja Jagani
    • f811064abf - [grid] Rename NodeStatus id and uri field for serialization :: Puja Jagani
    • 9617c44c20 - [grid] Update scheme in RedisOptions for the uri :: Puja Jagani
    • 1b7b9480cf - [grid] Update DefaultSlotSelector :: Puja Jagani
    • 049e780a18 - [grid] Make Slot serializable :: Puja Jagani
    • 1463f03246 - [grid] Create redisson client :: Puja Jagani
    • 9e9caf455c - [grid] Add redis grid model flags :: Puja Jagani
    • b64deb332b - [grid] Add Grid Model flag :: Puja Jagani
    • 370dad386b - [grid] Add redis package to the Distributor :: Puja Jagani
    • fae641b230 - Add Redisson dependency :: Puja Jagani
    • e7c39cc04e - [grid] Extract GridModel into an interface :: Puja Jagani
    • 10a1fb3e17 - Issue 9549 (#9557) :: Eduardo Wermuth
    • cb4857d76c - [js] Updating rules_nodejs to 3.6.0 :: Sri Harsha
    • 3e94fb06ff - Restoring --action_env=PATH to .bazelrc :: Jim Evans
    • 43d7214167 - [dotnet] Allow network interception to handle duplicate response headers :: Jim Evans
    • c0a5c3eead - [py] PEP 484 type hints for selenium.webdriver.common.timeouts (#9524) :: Oleg Höfling
    • 6d153738df - Fix incorrect use of 'NoReturn' type annotation. (#9540) :: varunsurapaneni
    • 8d1a5e3084 - [grid] Aligning row headers and row content for running sessions :: Diego Molina
    • 35f937fa65 - A tiny bit of extra logging to let people know requests require authentication :: Simon Stewart
    • 2c437713b3 - Warn of unauthenticated requests :: Simon Stewart
    • 39b35f886f - Make it possible to secure the Router :: Simon Stewart
    • afa91872f3 - Make setting the script timeout consistent with setting other timeouts :: Simon Stewart
    • 53ad48fbf4 - Allow the RemoteWebDriver.Builder to use Credentials for http authentication :: Simon Stewart
    • 63fd7f722d - Add a Filter to handle basic authentication :: Simon Stewart
    • 7f8544b990 - Adding an authentication filter :: Simon Stewart
    • 6d77c38801 - Add build information to the manifest of the standalone server :: Simon Stewart
    • 5f4d8182e4 - [py] Update changelog and versions for B4 :: AutomatedTester
    • 5d3698257d - [dotnet] Updating forgotten interface method :: Jim Evans
    • af8d5eff19 - Updating .NET version for release build :: Jim Evans
    • 43064e5a0e - Updating .NET CHANGELOG for 4.0 beta 4 :: Jim Evans
    • cab2ea2a14 - [rb] bump version to 4.0.0.beta4 :: titusfortner
    • 3743d15d6c - [js] resolving dependabot alert issue for package ws :: Sri Harsha
    Source code(tar.gz)
    Source code(zip)
    selenium-dotnet-4.0.0-rc1.zip(19.42 MB)
    selenium-dotnet-strongnamed-4.0.0-rc1.zip(11.64 MB)
    selenium-html-runner-4.0.0-rc-1.jar(23.14 MB)
    selenium-java-4.0.0-rc-1.zip(19.16 MB)
    selenium-server-4.0.0-rc-1.jar(20.93 MB)
    selenium-server-4.0.0-rc-1.zip(44.92 MB)
  • selenium-4.0.0-beta-4(Aug 20, 2021)

    Changelog

    For each component's detailed changelog, please check:

    Commits in this release

    Click to see all the commits included in this release
    • e674eefec9 - Release selenium-webdriver 4.0.0.beta3 and selenium-devtools 0.91.0 :: Alex Rodionov
    • a1a0b20943 - [JS] fix: fixes moderate vulnerability ssri (dependency of react-scripts) :: Sri Harsha
    • 11d84a73ac - [JS] Updating rules_nodejs to 3.4.0 :: Sri Harsha
    • 4f830b6b4f - [build] Upgrade rules_python to 0.2.0 :: AutomatedTester
    • fe6c4c2d52 - Move the implementation of the new session queue into the local package :: Simon Stewart
    • 8322f0fd71 - Rename "NewSessionQueue" to "SessionRequests" :: Simon Stewart
    • b1bfdab384 - Follow up PR to ensure that the session queue name is used consistently :: Simon Stewart
    • 3782dfb150 - Fill out the generic type for GridData :: Simon Stewart
    • e5f0328d38 - Remove unused abstract base class: SessionRequests is only used by the LocalNewSessionQueue :: Simon Stewart
    • ca2c72a260 - [py] Expand element to be clickable in expected conditions(#9374) :: Max Perrello
    • 1d31428675 - [grid] Fix build due to SessionRequests renaming (#9397) :: Puja Jagani
    • 2483cba731 - Continue unifying the new session queue :: Simon Stewart
    • f621dca9f4 - Move data classes used only in the local new session queue to that package :: Simon Stewart
    • 68f3edcb9b - [JS] Allow relativeby with findElement (#9396) :: Sri Harsha
    • db6d118967 - [py] Fix converting list of tuples to str in send_keys (#9330) :: Sergey Fursov
    • 30be80b981 - [py] Correct flake8 in python tests :: AutomatedTester
    • 8aafd3f8e7 - [bazel] Bump pinned Firefox to v88 :: Simon Stewart
    • 18c94547c0 - [js] Add windowTypes option support for ChromiumDriver (#7897) :: Salvador Cabrera Lozano
    • 5db9c46855 - Expose #execute_cdp method for remote Chrome/Edge instances :: Alex Rodionov
    • 8cabfbfeb6 - [grid] Remove old Grid tests since features exist in current Grid (#9400) :: Puja Jagani
    • f67095a54a - [java] Implement getDomAttribute method in EventFiringWebDriver (#9394) :: Puja Jagani
    • 109ee82c1f - [build] upgrade bazelisk to 1.7.5 in github actions :: AutomatedTester
    • dd8741a1a9 - [grid] Fix flaky event bus tests by dedicated threading, reverting the polling loop logic and increasing poll timeout (#9383) :: Puja Jagani
    • 25adcf1d96 - Unignore tests for setting different cookies on different domain :: Alex Rodionov
    • 192e347656 - [grid] Remove GridShutdown test (#9410) :: Puja Jagani
    • 0b2ab18910 - [grid] Fixing typo on config to make StressTest pass :: Diego Molina
    • 4153f72c02 - [py] Add the ability to use Options classes on Safari :: AutomatedTester
    • 95dc027897 - [py] Fix flake8 issues in safari options :: AutomatedTester
    • de8f703087 - [JS] Updating rules_nodejs to 3.4.1 :: Sri Harsha
    • 73ba66953a - [build] Remove old unused python third_party items (#9412) :: David Burns
    • 3e5ffdf224 - [bazel] Add note on working with Apple Silicon :: Simon Stewart
    • 83e80c246a - [bazel] Run buildifier. No logical changes. :: Simon Stewart
    • 554873dac5 - Rework the LocalNewSessionQueue to be simpler :: Simon Stewart
    • 7fd49ca2b9 - Adding some docs for the LocalNewSessionQueue :: Simon Stewart
    • 921241db86 - Remove unused method from the LocalNewSessionQueue :: Simon Stewart
    • c13ec4e1a3 - Add a create method to the LocalNewSessionQueue :: Simon Stewart
    • 93c9ec7740 - Re-enable testing of all Grid modes in the EndToEndTest :: Simon Stewart
    • 7e20289684 - Expose session request metadata from the new session payload :: Simon Stewart
    • 47824b3775 - Bring SessionRequest and CreateSessionRequest into alignment :: Simon Stewart
    • d83df531a5 - Move SessionRequest into the data package :: Simon Stewart
    • 854ac60c76 - Introduce a CapabilitiesUtils class for common operations on Capabilities :: Simon Stewart
    • d9bb0fba8b - Allow the new session command from the remote webdriver to take more than one capability :: Simon Stewart
    • 6c19c13e63 - [js] Updating rules_nodejs to 3.4.2 :: Sri Harsha
    • 6c701582f1 - [js] resolving path for js-dossier (used for generating api doc for js) :: Sri Harsha
    • d7c2e4cdd4 - [javascript] Updating dependencies :: AutomatedTester
    • a22d0fd220 - [py] Add the ability to enable mobile on options classes :: AutomatedTester
    • 13f4cfb59a - Apple Silicon is represented as aarch64 :: Simon Stewart
    • 8d80348b75 - Make sure only the Grid can attempt to update the new session queue :: Simon Stewart
    • 973ab84314 - Move websocket dependency to selenium-devtools gem :: Alex Rodionov
    • 25e848af07 - Make the SlotSelector an argument of the Distributor :: Simon Stewart
    • c6d4516e9c - Migrate Ruby bindings from CrazyFun to Bazel :: Alex Rodionov
    • d64bc889f6 - Explicitly list packaged files gemspec :: Alex Rodionov
    • 5a4ce484fa - Implement Ruby gem building with Bazel :: Alex Rodionov
    • c6e2f04248 - Update Bazel Ruby rules to fix SDK problems on Linux Fedora :: Alex Rodionov
    • f44cc24834 - Force 644 mode on all files in Ruby gem :: Alex Rodionov
    • d7c0647228 - Simplify Ruby builds by avoiding data files :: Alex Rodionov
    • 39ba33e758 - Remove CrazyFun build file from Ruby bindings :: Alex Rodionov
    • 584c59014b - [java] Handle bad gateway response from the server (#9444) :: Puja Jagani
    • b1fd99da57 - Build Ruby gems on CI :: Alex Rodionov
    • f5989bf115 - Use alwaysMatch instead of firstMatch by default :: Alex Rodionov
    • dc816249f5 - Do not camelize Chrome localState object :: Alex Rodionov
    • 88373fc3a1 - Do not override browser options when they are set with plain string :: Alex Rodionov
    • 8cb82b413f - fixup! Do not camelize Chrome localState object :: Alex Rodionov
    • 3106c9c0fa - Fix gem missing lib/selenium/webdriver.rb :: Alex Rodionov
    • cde0cd001b - [grid] Fix new session creation test (#9438) :: Puja Jagani
    • 916168f403 - [py] handle poor responses from drivers when there are errors. Fixes #9437 :: AutomatedTester
    • 5d7faf62fe - [java] Add proxy support to NettyClient (#9434) :: Puja Jagani
    • 84e746a258 - [JS] updating packages to resolve dependabot alert :: Sri Harsha
    • 97379a0b58 - Add accessor for new session request metadata :: Simon Stewart
    • a7b02263ce - Move logic for creating a session into the LocalDistributor :: Simon Stewart
    • cd64607ad5 - Rework how the Distributor creates sessions :: Simon Stewart
    • fb2244b30b - Update driver command executor thread executor for driver shutdown (#9430) :: Puja Jagani
    • d15cfdab4c - Remove Ruby mappings for CrazyFun in favor of Bazel :: Alex Rodionov
    • 112e9c2989 - Next release will be beta 4 :: Simon Stewart
    • 0436178e25 - Update java changelog prior to beta 4 :: Simon Stewart
    • 6a39ced489 - Update Bazel Ruby rules to allow toolchain to work on Windows :: Alex Rodionov
    • 8bc8e07714 - Bump chrome to v90 :: Simon Stewart
    • 27e37e9138 - [js] Updating dependencies :: Sri Harsha
    • be4c11f135 - Allow the Config to create classes with default constructors :: Simon Stewart
    • 71cc53b910 - Ensure that Capabilities implement hashCode and equals consistently :: Simon Stewart
    • 80f7c886aa - Allow clients to send stereotypes to help determine what to get from the new session queue :: Simon Stewart
    • 3af936cc16 - Make the distributor use the queue a little more smartly :: Simon Stewart
    • 5e0f804b9d - Increase parallism when starting sessions :: Simon Stewart
    • 94627e98e5 - Loggers should not be public fields :: Simon Stewart
    • 62ce7e650a - Reorg spacing in class. No logical changes :: Simon Stewart
    • bb190d134d - Remove unused method :: Simon Stewart
    • b47d052a93 - Avoid using CompletableFuture in the local new session queue :: Simon Stewart
    • bb805a62f0 - [js] Updating rules_nodejs to 3.5.0 :: Sri Harsha
    • b287e73ce2 - [java] Add remote web driver related interfaces for dynamic proxy creation (#9466) :: Puja Jagani
    • d2b00715d8 - Remove requests Python build dependency :: Alex Rodionov
    • 52d185d1bd - Remove leftover CrazyFun build files :: Alex Rodionov
    • 87756ddb97 - Remove closure CrazyFun build file :: Alex Rodionov
    • 3343a55b05 - Update Rakefile to (not) load proper CrazyFun build files :: Alex Rodionov
    • 9201335d0a - Migrate JRuby update target to Bazel :: Alex Rodionov
    • bf39aefa8b - [grid] Update JDBC commands of session map info :: Puja Jagani
    • a097e1beb4 - Bump java dependencies :: Simon Stewart
    • d9f2a0aae0 - Bump rules_jvm_external to a recent version :: Simon Stewart
    • da5331b162 - Migrate noblur library complication to Bazel :: Alex Rodionov
    • 49f706f436 - [grid] Add thread pool for driver service startup :: Puja Jagani
    • e9c738de8a - [py] Add a test with returning a JS Const object :: AutomatedTester
    • 7bf0e705e8 - [py] Add test to return global from page. :: AutomatedTester
    • 0dd362cf5c - Make *Options mirror Capabilities far better :: Simon Stewart
    • d990acea7e - Run "optimize imports" on the distributor :: Simon Stewart
    • 84395df36b - Remove unusued fields from the Distributor :: Simon Stewart
    • f746b26224 - [JS] Updating changelog for beta-4 :: Sri Harsha
    • f07fface66 - Add a toString method to Either :: Simon Stewart
    • 4bbd2bdfe3 - [py] Add type hints to relative by code :: AutomatedTester
    • 83f4a19608 - Add a script to make it easier to test tracing of the distributed grid :: Simon Stewart
    • aecc5bd8cb - [grid] Add spans to new session queue remove related functions :: Puja Jagani
    • 6010b2c73c - [py] Add the ability to pass in different locators to do Relative Locator searches :: AutomatedTester
    • b02553c44e - [py] Add docstrings for RelativeBy :: AutomatedTester
    • 411b883645 - [java] quietExceptions does not exist anymore, no need to test it :: Diego Molina
    • c13800859e - [grid] Add trace headers to SessionRequest for distributed Grid tracing :: Puja Jagani
    • 838768cf2a - Bump bazel to 4.1.0 :: Simon Stewart
    • 225dd3ee42 - Bump apple_rules_lint to 0.1.1 :: Simon Stewart
    • de22071c5c - Bump bazel platforms to 0.0.4 :: Simon Stewart
    • 90bbf5be5d - Remove bazel RBE toolchains. We don't use them :: Simon Stewart
    • 5048c9993b - Bumping rules_proto to most recent version :: Simon Stewart
    • 9cc2823604 - Bump rules_jvm_external to 4.1 :: Simon Stewart
    • d91376413c - Bump rules_pkg to 0.4.0 :: Simon Stewart
    • 6e56619a0b - Bump rules_docker to latest release :: Simon Stewart
    • ee24455dc4 - Bump rules_k8s to the latest version :: Simon Stewart
    • cc96b2789a - Bump base docker images to latest versions :: Simon Stewart
    • 0580ff2cac - Bump pinned edge to latest stable release :: Simon Stewart
    • 7805a65762 - [grid] Checking driver name before setting driver max sessions :: Diego Molina
    • 5a943d5546 - [grid] Allowing more than one IE session :: Diego Molina
    • 7b832ead31 - [grid] Ensure Distributor rejects request immediately if no matching slot exists in the Grid :: Puja Jagani
    • 096ec415e4 - [grid] Add http logs flag to allow http trace event logs :: Puja Jagani
    • 61f04283ef - [grid] Pulling images from custom registries :: Diego Molina
    • 7f7b106e7e - [JS] Updating rules_nodejs to 3.5.1 :: Sri Harsha
    • 93e5fb55e1 - [py] Add the ability to pass in multiple options and have that capabilities :: AutomatedTester
    • 2a8d9cb00b - [grid] Add test timeout for session queue test :: Puja Jagani
    • 288b337fe8 - [rb] add support for Firefox full page screenshot :: titusfortner
    • 597f474256 - [rb] simplify the remote server code :: titusfortner
    • 93573e31a6 - [grid] Better naming, no logical changes :: Diego Molina
    • a51085a604 - [grid] Simplifying docker image name parsing :: Diego Molina
    • 6ca474d333 - [grid] Add a flag to allow the Distributor to reject request for unsupported capabilities :: Puja Jagani
    • f75343f8b7 - [py] PEP 484 type hints for common.exceptions and webdriver.support.color (#9482) :: Oleg Höfling
    • 2074698d0d - Bump ws from 7.4.5 to 7.4.6 (#9531) :: dependabot[bot]
    • c24a50f376 - [grid] Checking config URIs have a host :: Diego Molina
    • 2285c44e58 - [grid] Waiting for video recording to start :: Diego Molina
    • d62a16497b - Updating links and comments in issue templates. :: Diego Molina
    • 26e46fb538 - [rb] update guards for specs now passing with Chrome 91 :: titusfortner
    • 0157c8ffcc - [rb] fix parsing differences between options and capabilities :: titusfortner
    • aa0733ddd1 - [dotnet] Remove CDP version support for 86 and 87. Add CDP version support for 90 and 91. :: Puja Jagani
    • 3b41e60c2b - [grid] One call less when interacting with the queue :: Diego Molina
    • a42e7b84fc - [grid] One instance of DriverService.Builder per Node Slot :: Diego Molina
    • 1bf33177af - [grid] Returning actual last start for a slot. :: Diego Molina
    • 6e9078194c - [grid] Using PortProber.findFreePort() for DistributorTest :: Diego Molina
    • 8c9faf500e - [java] Enabling some Chrome tests as the test runner says... :: Diego Molina
    • f9026c886c - [rb] Server code expects the jar location to be a String not a Pathname :: titusfortner
    • 6f25a6f9de - [grid] Ignoring case when parsing browser name :: Diego Molina
    • 8755948934 - [grid] Improving DistributorTest (#9546) :: Diego Molina
    • fb4d7143dc - [grid] Moving to Docker API 1.41 :: Diego Molina
    • 70af0d649d - Refactor .NET bindings class inheritance hierarchy :: Jim Evans
    • b754461f7c - [dotnet] Update Chromium-based browsers to correclty inherit Options :: Jim Evans
    • dca5756ea7 - Update .NET test to properly use remote/grid :: Jim Evans
    • f10cb89fe1 - [dotnet] Add proxying of CDP commands via remote/grid :: Jim Evans
    • 796809645f - [dotnet] Make HttpRequestData properties settable (#9456) :: doctor-house
    • 656c55fcee - [py] Returning fixed IP in GitHub actions (#9550) :: Diego Molina
    • 7a932e7f33 - [dotnet] Moving CDP JS engine monitoring class :: Jim Evans
    • b2cf065aec - [dotnet] Add support for finding elements in shadow DOM :: Jim Evans
    • 29f46d02dd - [grid] Doing .countDown() when the right event has been listened to :: Diego Molina
    Source code(tar.gz)
    Source code(zip)
    selenium-dotnet-4.0.0-beta-4.zip(27.38 MB)
    selenium-dotnet-strongnamed-4.0.0-beta-4.zip(16.07 MB)
    selenium-html-runner-4.0.0-beta-4.jar(15.63 MB)
    selenium-java-4.0.0-beta-4.zip(22.14 MB)
    selenium-server-4.0.0-beta-4.jar(22.79 MB)
  • selenium-4.0.0-beta-3(Aug 20, 2021)

    Changelog

    For each component's detailed changelog, please check:

    Commits in this release

    Click to see all the commits included in this release
    • 917106e26b - [grid] Adding "/wd/hub" route to RouterServer :: Diego Molina
    • b2a7f08c61 - [dotnet] Add CDP support for Firefox :: Jim Evans
    • 49455d08d4 - Update .NET CHANGELOG for 4.0 beta2 release :: Jim Evans
    • 53a20ad4aa - [.NET] Make DriverService InitializationTimeout property public :: Jim Evans
    • 3784e81478 - [py] Remove chrome setup as Github actions already has it :: AutomatedTester
    • 4110e0a381 - [py] Fix dependencies for unit tests :: AutomatedTester
    • 40eb42d845 - [py] Fix chromedriver startup :: AutomatedTester
    • bad562829e - [py] Create Python bindings Post1 release for Beta 2 :: AutomatedTester
    • 720451f6fe - [bazel] Correct pinned browser path for chrome on linux :: Simon Stewart
    • b0ff8df29d - [dotnet] Add screenshot support for EventFiringWebElement (#9258) :: Troy Walsh
    • f1cb54f5b5 - [java] Add null check before returning isDisplayed value (#9299) :: Puja Jagani
    • 8c4050f724 - [grid] Purge timed out requests sitting the queue at regular intervals (#9283) :: Puja Jagani
    • 159b80e15f - [grid] Getting the Grid status from the Model :: Diego Molina
    • fa962ad2dd - [py] Disable wait on frame test due to bug in Firefox :: AutomatedTester
    • a2d04d0517 - [py] remove unused import in webdriver wait tests :: AutomatedTester
    • 9749b35c9b - [grid] Grid is ready when Nodes are available :: Diego Molina
    • b74e726c9f - [java] Bumping to beta-3 :: Diego Molina
    • 9a3572a708 - [docs] Fix python docs generation :: AutomatedTester
    • 0f49b5351f - [docs] Correcting typos in docs generation :: AutomatedTester
    • 9a4bbf40e7 - [py] Correct case for drivers when starting Remote :: AutomatedTester
    • 08e351d54c - [py] Disable aria tests for remote :: AutomatedTester
    • fed7cd1633 - [java] Disable referrer tests in Chrome due to it's new defaults :: AutomatedTester
    • 39522b46f0 - [py] disable element aria test :: AutomatedTester
    • a625b1e3a3 - [grid] Getting container's network name :: Diego Molina
    • c8e2a798cb - [grid] Starting containers with the correct network :: Diego Molina
    • b58c848977 - [py] disable aria label tests :: AutomatedTester
    • f0ca78cad6 - [grid] Reducing log output for Docker :: Diego Molina
    • 909239cd9f - [grid] Dynamic Grid working properly on Linux :: Diego Molina
    • dabb8e450a - Bump urllib3 from 1.26.2 to 1.26.3 in /py (#9311) :: dependabot[bot]
    • 56f96c4e48 - [py] Loosen version requirements on dependencies. Fixes #9312 :: AutomatedTester
    • 0849604f66 - Remove merge conflict... thanks VSCode :: AutomatedTester
    • cf3f36abed - [java] Refactoring OutputType.FILE#save (#9309) :: Alberto Scotto
    • 5004ca8064 - [java] Fix getScreenshotAs: avoid unnecessary conversions (#9308) :: Alberto Scotto
    • 056b281256 - [grid] Remove redundant listeners in Grid Model. (#9310) :: Puja Jagani
    • 962395064b - [grid] Removing unused NodeRemovedEvent.java :: Diego Molina
    • 6a3f867fd2 - Allow RelativeBy to start with any locator, not just tag name (#9273) :: JustasM
    • a08fa1e532 - [bazel] Fix the build :: Simon Stewart
    • 43ab38391f - [js] replacing asserts equal with strictEqual and deepEqual with deepStrictEqual :: Sri Harsha
    • f1307e58b7 - [bazel] Bump pinned firefox to 88b1 so we have CDP present :: Simon Stewart
    • 38f393a346 - [cdp] Move shared logic for finding endpoints to a shared location :: Simon Stewart
    • 6972f10598 - Add logging of http exchange contents :: Simon Stewart
    • a577a2c445 - Minor formatting tweaks. No logical changes :: Simon Stewart
    • 995d8977f9 - [grid] Use heartbeat to register the Node (#9321) :: Puja Jagani
    • 64447d4b03 - Ensure third party files are available for browser testing (#9323) :: Puja Jagani
    • 777cf25649 - Ensure extension is available on the path for Firefox tests (#9331) :: Puja Jagani
    • 84dd6109ce - [nodejs] code cleanup first iteration (#9158) :: Potapov Dmitriy
    • eebed33f8f - [rb] fix bug with values nested inside chrome prefs getting camelcased :: titusfortner
    • 1b60931b0b - [js] Updating rules_nodejs to 3.2.3 :: Sri Harsha
    • 627c0de8b1 - [rb] fix complexity in options for rubocop :: titusfortner
    • d097baefd2 - [grid] Improving platform matching :: Diego Molina
    • d798b52c4c - [grid] Generalizing platform for browser driver :: Diego Molina
    • 957b37e2c3 - [py] Only give deprecation warning if Profile is being used in options :: AutomatedTester
    • e6f1131dae - [rb] fix bug preventing processing of Chrome profile :: titusfortner
    • 0f2795d529 - Avoid creating intermediate map when creating immutable capabilities :: Simon Stewart
    • dfee472fab - Make immutable capabilities be based on an immutable data store :: Simon Stewart
    • c078d31725 - Make persistent capabilities have a similar toString implementation to other capabilities :: Simon Stewart
    • c39edad761 - [grid] Allowing users to overwrite recommended max sessions :: Diego Molina
    • eaa10470f6 - Remove JRuby-specifiy SocketPoller#listening? :: Alex Rodionov
    • c8548774d9 - Allow being explicit about alwaysMatch/firstMatch capabilities :: Alex Rodionov
    • b313712f46 - Update javadoc for getCssValue() (#9346) :: Puja Jagani
    • 9abb253b89 - [grid] Making log flag visible :: Diego Molina
    • 79253e537d - [bazel] Add a //:server target for a local selenium grid with pinned browsers :: Simon Stewart
    • aa7cdc6863 - [bazel] Bump k8s rules to 0.6 :: Simon Stewart
    • 24bc7f0ab9 - [bazel] Bump versions of docker images we use to the latest ones :: Simon Stewart
    • d901aa63c6 - [k8s] Fix up //deploys/k8s:grid.apply so it works again :: Simon Stewart
    • 48e0d174d1 - Make firefox and chrome announce cdp uri and version in their capabilities :: Simon Stewart
    • 17d8a37a08 - [grid] Have the node server rewrite cdp endpoints and versions :: Simon Stewart
    • ed0fe4fd5d - [js] resolving dependabot alert triggerd by dependency jest :: Sri Harsha
    • aa6727ec58 - [grid] Removing jest from dependencies :: Diego Molina
    • bd46c8277a - [grid] Removing Firefox CDP support :: Diego Molina
    • fcfbc6ba25 - [grid] Fixing cli args parsing :: Diego Molina
    • 430c7a4e1d - [java] Improving exception when server returns 504 (#9354) :: Alberto Scotto
    • c287f01039 - [grid] Fixing failing test in GitHub actions :: Diego Molina
    • be913bba68 - [grid] Extending timeout in test for a more stable CI :: Diego Molina
    • 00b0b39e9e - [grid] Enhancing CdpEndpointFinder to get debuggerAddress URI :: Diego Molina
    • d9c0dd8094 - [grid] Consolidating getReportedUri logic in CdpEndpointFinder :: Diego Molina
    • 8012af936c - [grid] Using getReportedUri instead of parsing moz:debuggerAddress manually :: Diego Molina
    • 81efd3012c - [java] Set logging level to the logger when method is called (#9357) :: Puja Jagani
    • e9ba4e3f76 - make isPromise() return boolean value for null and undefined cases (#6785) :: Jayasankar
    • 8dae816e6c - [JS] Remove legacy action API support (#9362) :: Sri Harsha
    • 4162e16693 - [rb] fix bugs and allow saving print page :: titusfortner
    • 3c82c868d4 - [Python] Allow overriding the default 250 msecs duration of pointer movement (#9336) :: space88man
    • 562a31b330 - [js] updating rules_nodejs to 3.3.0 :: Sri Harsha
    • c7f3faecf4 - [devtools] Add v90 (beta) version 90.0.4430.64 :: titusfortner
    • 059f4aa467 - [devtools] Update v89 version to 89.0.4389.126 :: titusfortner
    • 9a4e58c5ee - [devtools] remove support for v86 & v87 :: titusfortner
    • 0b2a71361d - [devtools] Add v91 (dev) version 91.0.4471.0 :: titusfortner
    • e16d2fd6e1 - [cdp] Get the java build working again by adding v90 and v91 :: Simon Stewart
    • bedb96f375 - [cdp] Firefox tracks CDP v85 :: Simon Stewart
    • 248682b06b - Bump pinned geckodriver to 0.29.1 :: Simon Stewart
    • 1b118c4e86 - [py] Update CDP Support versions to remove 86,87 and add 90,91 :: AutomatedTester
    • 413493502f - [js] Remove devtools support for v86,v87 and adding support for v90, v91 :: Sri Harsha
    • a9e10e9fa3 - [bazel] Switch from a deprecated flag to the recommended alternative :: Simon Stewart
    • 3c26ddbfe8 - [bazel] Cope with the deleted mac geckodriver download :: Simon Stewart
    • 473f3e6632 - Remove CDP versions that are no longer supported :: Simon Stewart
    • eb4c0846d5 - Create SECURITY.md :: David Burns
    • 9af013ac62 - Bump rules_jvm_external to a recent snapshot :: Simon Stewart
    • 8f2429842b - [build] Use python 3.7.9 to get around the Overflow issue in simple web server :: AutomatedTester
    • 4ffb27fbca - [java] Return a ws scheme instead of the http scheme of the grid :: AutomatedTester
    • a6b5f22c5a - [py] Use the correct version of CDP that you've connected to when using Remote :: AutomatedTester
    • 0939c91d83 - Pretty print timeout when (uh) timing out an entry in the queue :: Simon Stewart
    • 49925a410b - Remove unsupported CDP versions from selenium-devtools gem :: Alex Rodionov
    • a4822a3e74 - Support passing timeouts to capabilities :: Alex Rodionov
    • 6fd3b9b3ca - [cdp] Make sure that CDP commands work over the Grid :: Simon Stewart
    • dcc371d5b2 - [cdp] Use se:cdpVersion if present :: Simon Stewart
    • d9ef5285c4 - Better logging from proxying CDP nodes when in debug mode :: Simon Stewart
    • 0421f53831 - Grab CDP version from capabilities when using remote :: Alex Rodionov
    • 6ced1c145e - Add support for getting ARIA role and accessible name of element :: Alex Rodionov
    • 8db558f819 - Prevent defining overwriten proxy/timeouts= methods in capabilities :: Alex Rodionov
    • 35832cf11e - [py] Include a second file for upload tests :: AutomatedTester
    • c3f2ae0f89 - Update java changelog :: Simon Stewart
    • 7b3005f2c7 - Remove unused constructor parameter :: Simon Stewart
    • abffd85d60 - [py] Enable bidi tests for Firefox 86+ :: AutomatedTester
    • 0319122a12 - Move method to the one class where it is used :: Simon Stewart
    • 4c4235af08 - [py] Enable bidi tests that work in Firefox for remote :: AutomatedTester
    • 68beca0a9e - [py] Bump python bindings to beta 3 :: AutomatedTester
    • 6657964f4f - [js] Prepare JS bindings for Beta 3 :: AutomatedTester
    • f052b7bfa6 - Strongly type the SessionRequest :: Simon Stewart
    • e33ed595b2 - Remove unused constants :: Simon Stewart
    • ec6dc92438 - Make the return type of NewSessionQueue.getQueuedRequests strongly typed :: Simon Stewart
    • 7e3eb855f8 - Make HasDevTools interface-like to avoid private methods being overriden :: Alex Rodionov
    • ac54d13b9b - Update java targets we should publish :: Simon Stewart
    • 32d07d8b83 - Generate selenium-devtools for CDP v90 and v91 :: Alex Rodionov
    • 960ed53264 - Update changelog for Ruby bindings 4.0.0.beta3 :: Alex Rodionov
    • 5d108f9a67 - Avoiding running tests for changed referrer header behaviour on firefox :: Simon Stewart
    Source code(tar.gz)
    Source code(zip)
    selenium-html-runner-4.0.0-beta-3.jar(18.06 MB)
    selenium-java-4.0.0-beta-3.zip(21.80 MB)
    selenium-server-4.0.0-beta-3.jar(22.59 MB)
  • selenium-4.0.0-beta-2(Aug 20, 2021)

    Changelog

    For each component's detailed changelog, please check:

    Commits in this release

    Click to see all the commits included in this release
    • f93fe9450f - [grid] Adding a few unit tests (UI) :: Diego Molina
    • 790f604ad9 - [rb] implement initial support for Firefox BiDi :: titusfortner
    • 7580e44c03 - Release Ruby bindings 4.0.0.beta1 :: titusfortner
    • e81e183b71 - Update @platforms to 0.0.3 :: Simon Stewart
    • 5c446c46af - Avoid using bazel native python rules :: Simon Stewart
    • 450eb050b5 - [py] Fix homepage attribute in wheel target :: AutomatedTester
    • eeb0cb0b5c - [py] Add ARIA APIs for getting the role and label of an Element :: AutomatedTester
    • 5199624263 - Update .NET CHANGELOG for 4.0 beta1 :: Jim Evans
    • 152c4cd655 - Correct framework version in WebDriverBackedSelenium .nuspec file :: Jim Evans
    • 08c387421d - [bazel] Use newer mechanism for hermetic java toolchain :: Simon Stewart
    • dccf4dd92d - [JS] Removing duplicate variable declaration of IE from capabilities :: Sri Harsha
    • dcfc437561 - [JS] Minor code cleanup :: Sri Harsha
    • e0e668f28b - [js] Updating copyright text :: Sri Harsha
    • 88279c820e - [JS] Removing duplicate license text updated by update_copyright.js :: Sri Harsha
    • 99c31dd170 - [java] FIxing order of statements in assertj call chain :: Alexei Barantsev
    • 0065abd731 - [java] Changing order of Either parts, right part is for right value :: Alexei Barantsev
    • e5194a7b79 - [grid] Implementing node heartbeating that makes the distributor aware about node availability. Fixes #9182 :: Alexei Barantsev
    • 2fa1a0ce74 - [grid] Setting default heartbeat period value in LocalNode :: Alexei Barantsev
    • b69aa6ad88 - [grid] Running unit tests in GitHub Actions (UI) (#9179) :: Diego Molina
    • 2eea3d8e03 - [grid-ui] Don't hide the drawer if the grid is disconnected :: Alexei Barantsev
    • a4f5c22e13 - [grid-ui] Don't hide the drawer if the grid is disconnected (V2) :: Diego Molina
    • 68b17ed70c - [grid-ui] Don't hide the drawer if the grid is disconnected :: Diego Molina
    • e9b3e7a3f4 - [grid] Adding back a couple of WebDriver tests for the Grid UI :: Diego Molina
    • e88c143461 - [grid] Adding missing copyright headers :: Diego Molina
    • 3892be67bd - [.NET] Fix network interception using CDP :: Jim Evans
    • 3db814dca8 - [.NET] Bump assembly version for development of next release :: Jim Evans
    • 78d66e8217 - [grid-ui] Adding error handler to Apollo, it is not decided yet how to propagate information about handled errors to the components :: Alexei Barantsev
    • ce3a14d49f - [grid-ui] Rewriting components covered by tests to be classes instead of functions :: Alexei Barantsev
    • 6662cc61b3 - [grid-ui] Refactoring more components to classes and adding more tests :: Alexei Barantsev
    • c317354480 - [grid-ui] Refactoring all components to classes, and implementing robust graphql data polling with error handling and recovering after errors :: Alexei Barantsev
    • b0e61cf067 - [grid-ui] Refactoring TopBar to make it more testable :: Alexei Barantsev
    • b2a5a417d9 - [grid-ui] Decomposing NavBar to smaller components :: Alexei Barantsev
    • 8232110158 - [grid-ui] Implementing more compact layout of stereotypes and visualizing node DOWN status with light-gray background :: Alexei Barantsev
    • 75f55a352b - [grid] Waiting for two missed heartbeats to mark a node DOWN and actually resurrect nodes after receiving a heartbeat event :: Alexei Barantsev
    • 5113b2d18d - [grid-ui] Refactoring node block to smaller components :: Alexei Barantsev
    • 2a28c63eed - [grid-ui] Use the same button look-n-feel :: Alexei Barantsev
    • 17e395e579 - [grid-ui] Extracting small reusable components :: Alexei Barantsev
    • 8dcfe79b2d - [grid] Declaring individual imports :: Diego Molina
    • d17ac96fb4 - Upgrade OpenTelemetry to 0.16.0 (#9187) :: Puja Jagani
    • d387c913f6 - [grid] Avoiding NPE on the Grid UI :: Diego Molina
    • a75acaeec4 - [grid] FixingNPE on the Grid UI which was breaking E2E tests :: Diego Molina
    • 9ac878bc58 - [grid-ui] Massive code style fix to make ts-standard checker happy :: Alexei Barantsev
    • c8f352a99d - [grid-ui] Fixing overall concurrency panel visibility and properties :: Alexei Barantsev
    • 7dc0c8a78e - [grid] Parse log levels using Level.parse :: Simon Stewart
    • a34ad83886 - Use a custom classloader to load everything :: Simon Stewart
    • 3a94ffba98 - [tracing] Use OT provided mechanisms for configuring OT :: Simon Stewart
    • 1060b98f51 - [bazel] Run buildifier. No logical changes :: Simon Stewart
    • 6f92e8a082 - [docker] Containers may not always be present :: Simon Stewart
    • c969deb768 - Add missing copyright file. No logical changes :: Simon Stewart
    • 1ca2bac9fa - Stop the process if we cannot start the command :: Simon Stewart
    • c800a7b972 - Make sure we return after running main in bootstrap :: Simon Stewart
    • e874b53032 - Review places where we create an HttpClient :: Simon Stewart
    • fd7a4b6071 - [java] Changing a test for RemoteWebDriverBuilder to analyze requests in time, later the streams can be closed :: Alexei Barantsev
    • 6baf2b8872 - [java] Reworking ProtocolHandshake to return either result or an exception, and reworking RemoteWebDriverBuilder to use FileBackedOutputStream to form request to remote server. :: Alexei Barantsev
    • f87b21f2c1 - [java] Deleting @Beta annotation from InternetExplorerOptions, and some code cleanup :: Alexei Barantsev
    • d44efb4aad - [java] Formatting code, no functional changes :: Alexei Barantsev
    • d1e3a2c406 - [java] Deprecating EventFiringWebDriver in favor of EventFiringDecorator :: Alexei Barantsev
    • e0efe7e674 - [js] Remove Firefox Extension code handling :: AutomatedTester
    • 36bc787321 - [atoms] Tidying up atoms IE code paths :: AutomatedTester
    • 2a10bce463 - [js] Remove Firefox extension from selenium-atoms :: AutomatedTester
    • 5ae1547e10 - [java] Making stack trace shorter and prettier by throwing more specific exception :: Alexei Barantsev
    • 7d488f70fe - [java] Code formatting, no functional changes :: Alexei Barantsev
    • 0da772d2b0 - [java] Fixing InternetExplorerOptions.merge, it should ignore "se:ieOptions" and merge only real capabilities, "se:ieOptions" will be constructed automatically :: Alexei Barantsev
    • d2b45c58ec - [bazel] Make it easier for external projects to use browser pinning :: Simon Stewart
    • 8e8df2483f - Be a little less aggressive about closing httpclients :: Simon Stewart
    • ebd6bd7b4e - Make configuring options through system properties explicit :: Simon Stewart
    • 33fb89b6d4 - [py] remove unused imports :: AutomatedTester
    • 9ea195303e - [cdp] Use a flat namespace for selenium options :: Simon Stewart
    • 5ebc0e64b2 - [java] Fixing browser name and browser-specific capability prefix in EdgeFilter :: Alexei Barantsev
    • 4750e40b9c - [py] Add test for File Upload :: AutomatedTester
    • a10808bbd8 - [grid] FixingNPE on the Grid UI when requests are in the queue :: Diego Molina
    • e50e7acfd2 - [grid] Naming NewSessionRunnable thread to simplify debugging :: Diego Molina
    • 76d48d8aa3 - [java] What a silly mistake... :: Alexei Barantsev
    • fead8055c6 - [infra] Reworking the script that uploads files to google storage :: Alexei Barantsev
    • a77e65d23d - [infra] Fixing comments, no functional changes :: Alexei Barantsev
    • c11013dcd4 - [bazel] jcenter is no more :: Simon Stewart
    • 29534e3a61 - [js] updating rules nodejs to 3.2.1 (#9211) :: Sri Harsha
    • d6e4232e61 - [rb] move guards from SpecSupport to Support :: titusfortner
    • b9ef1f872f - Add support for intercepting browser requests :: titusfortner
    • 95707f2c77 - [py] Correct Type Hinting on option method. Fixes #9210 :: AutomatedTester
    • bd5ca6c643 - Fixed headless option not being passed to RemoteWebDriver constructor desired_capatibilities argument by ChromiumDriver. (#9208) :: Dmitriy Sintsov
    • 4024861170 - Additional Python type hints (#9192) :: Alberto
    • e569869fbc - [ui] TypeScript migration and clean up :: Simon Stewart
    • 16d6469451 - [rb] implement browser option equality check :: titusfortner
    • caa2fbec95 - [rb] allow creating subclass instances of Options from class method on super class, similar to Service class :: titusfortner
    • 1d0ab3ea74 - [rb] allow symbols for setting unhandled prompt behavior :: titusfortner
    • 6e1862467c - [rb] explicitly handle all w3c required capabilities from session creation return value :: titusfortner
    • 2965e4e0fa - [rb] removing :timeout accessor from HTTP Client :: titusfortner
    • 8e62549305 - [rb] debug clients have fixed problem with non-nil open_timeout values, switch to using library default :: titusfortner
    • d7872157cd - [rb] max line length needs to be 120 :: titusfortner
    • 0d706811f0 - Don't count requests in NetworkInterception tests :: Alex Rodionov
    • be89c108bc - Unfocus DevTools spec :facepalm: :: Alex Rodionov
    • 3d8f879912 - [docs] Make sure that we Bundle install for the docs :: AutomatedTester
    • a65ff1c9e9 - Add attribute_to_be_include method to expected_conditions when the at… (#9200) :: sunnyyukaige
    • a5d5af2d8f - [grid] Using a single Netty client instance (#9227) :: Diego Molina
    • d962c9fdb4 - [grid] Giving correct value to "register-period" :: Diego Molina
    • bd468dd842 - Update example in edge.js (#9231)[skip ci] :: hectorhon
    • 26c65c7a5c - Make persistent capabilities chain correctly :: Simon Stewart
    • 4464ac4f82 - [js] resolve file path (#9223) :: Sri Harsha
    • b9b4be3aad - Fix undefined instance variable warning :: Alex Rodionov
    • 6a3244e9a5 - Disable network interception tests for Firefox BiDi :: Alex Rodionov
    • 2d536a3157 - Allow to use DevTools from remote driver :: Alex Rodionov
    • 08b49b7237 - Add missing devtools dependencies for Chrome/Edge test targets :: Alex Rodionov
    • b3797d21eb - Disable Chrome 89 secure+http cookie test :: Alex Rodionov
    • 2b26c05e23 - [rb] implement #dom_attribute :: titusfortner
    • 6f41ea580f - [py] implement get_dom_attribute :: titusfortner
    • 7274f48ed8 - clarify documentation around attributes and properties :: titusfortner
    • 9b6231a45d - use attribute endpoint to evaluate multiple selects :: titusfortner
    • b132c55961 - [grid] Fixing order how config values are read :: Diego Molina
    • fa9de34bc7 - [grid] Displaying default values for toml config help :: Diego Molina
    • 93d8a2cbb6 - [grid] Enabling cors test :: Diego Molina
    • 4b17c14ed7 - [grid] Adjusting BaseServerFlags and ConfigFlags :: Diego Molina
    • e52fa0ad99 - [py] Deprecate using a Firefox profile in Options :: AutomatedTester
    • 4658527a78 - [grid] Reworking DockerFlags to show defaults properly. :: Diego Molina
    • 0a19bc4613 - [grid] Reworking DistributorFlags, LoggingFlags & NodeFlags :: Diego Molina
    • 30ae67a4e1 - [grid] Reworking last *Flags classes to show defaults properly. :: Diego Molina
    • 9c41b0b531 - [java] Bumping to beta-2 :: Diego Molina
    • 16b35554ca - [grid] Send node heartbeat only on successful node registration (#9213) :: Puja Jagani
    • 8975ba32d6 - [rb] add aliases for edge based on browser name :: titusfortner
    • 7004f1dfa6 - [js] Updating rules_nodejs to 3.2.2 :: Sri Harsha
    • 134cfec6fe - [grid] Lets avoid to create more than one "Regularly" when the Node registers again :: Diego Molina
    • 259a84ca05 - [grid] Update plain logs default value to true (#9246) :: Puja Jagani
    • a2dc3419e7 - [grid] Update Distributor to not retry session requests on unexpected driver errors (#9193) :: Puja Jagani
    • d488c0cddb - Upgrade OpenTelemetry to latest stable version 1.0.0 (#9247) :: Puja Jagani
    • 7db80da90d - [grid] Avoiding hard coded class names in Strings :: Diego Molina
    • aadc2039d7 - [grid] Add info and warn log while adding specific drivers to node (#9129) :: Puja Jagani
    • 23d51dabbe - [build] Set default browser args to browser keys :: AutomatedTester
    • c02a2d07bf - Pass options to RemoteWebDriver (#9240) :: Michal Čihař
    • 5385bbd7b8 - [py] Move code so that it is reachable :: AutomatedTester
    • 4b2db29c93 - [rb] run unit tests with JRuby 9.2.10 because of modules issues :: titusfortner
    • 536084e2db - [rb] allow deprecation logging to provide link to additional references :: titusfortner
    • d8c0d8e262 - [grid] Fixing parameter annotation :: Diego Molina
    • 8460e4ec4d - Lazy initialisation of the singleton default client factory instance (#9261) :: Puja Jagani
    • 69d9aab941 - [grid] Make session timeout configurable option for Node role (#9251) :: Puja Jagani
    • 2b6b05b05d - [py] Set Chromium Edge to be the default for Edge browsers :: AutomatedTester
    • 401e9807cd - [py] Improve proxy via options test for Firefox :: AutomatedTester
    • d39a7e3738 - [py] Fix flake8 :: AutomatedTester
    • 8b649c98e9 - [grid] Using Node default values everywhere :: Diego Molina
    • 9c138bc189 - [grid] Fixing cli args parsing when names are different :: Diego Molina
    • 3862ad0799 - [grid] Propagate the error to the client when reserving a slot (#9265) :: Puja Jagani
    • ef71789a3a - [grid] Update session slot to return Either for error propagation. Fix http response. (#9270) :: Puja Jagani
    • b2c32787df - [js] Remove JSUnit directory as it is no longer used. :: AutomatedTester
    • efb9b237aa - [py] Deprecate arguments in remote webdriver instantiation :: AutomatedTester
    • ad30bcdaac - [grid] Reverting change to internalErrorResponse :: Diego Molina
    • b58f9759e1 - [grid] Bubbling up session creation exception to client :: Diego Molina
    • 28b2e03598 - [grid] Make health check interval a configurable option for Distributor role (#9272) :: Puja Jagani
    • 533ccce27f - [grid] OPERA instead of operablink at OperaDriverInfo :: Diego Molina
    • 3821eedf79 - [grid] Leaving internalErrorResponse back to its state :: Diego Molina
    • 3a51bf193e - [grid] Fine graining matching logic for Strings :: Diego Molina
    • 1d31b391b6 - [grid] Detecting platform by default for Node :: Diego Molina
    • ca63885f70 - [py] Fix using arguments in Chrome Option. Fixes #9281 :: AutomatedTester
    • 6c405eafdf -  [js] upgrade insecure deps :: AutomatedTester
    • e0082a8f31 - [cdp] Add v85 support for Firefox :: Simon Stewart
    • 5e0ef41bd5 - [cdp] Remove v84 :: Simon Stewart
    • 278d17a795 - [cdp + js] Make the build silent :: Simon Stewart
    • 562427a776 - Update developers in java pom.xml :: Simon Stewart
    • 6e44d378cc - [py] Add Multiple file upload test :: AutomatedTester
    • 84b65b1641 - [JS] Remove support for Edge HTML (#9239) :: Sri Harsha
    • 941e9817af - [py] Fix flake8 in test :: AutomatedTester
    • 5a9a5467d3 - Generate transitive javadocs more correctly :: Simon Stewart
    • 2c775355ae - Update java changelog :: Simon Stewart
    • ce1f92ee1a - [bazel] Move common browser data to //common :: Simon Stewart
    • f27b249bd9 - Minor formatting tweak :: Simon Stewart
    • 58a72e9638 - Repin java deps :: Simon Stewart
    • c0ec2b8035 - [bazel] Move more java test infra into the java package :: Simon Stewart
    • 53053670ed - [bazel] Pin to stable Edge :: Simon Stewart
    • ffb606613c - Back away from using custom drivers in tests :: Simon Stewart
    • a0fae19c7b - Only merge command line arguments once in chromeoptions :: Simon Stewart
    • 03abbe8561 - Get driver capabilities from Browser in test :: Simon Stewart
    • 86dac53a36 - More test browser setup work :: Simon Stewart
    • fa52db0a49 - [bazel] Fix the build :: Simon Stewart
    • 333790b74a - [rb] auto load browser specific features into Bridge so they can be used by Remote Driver :: titusfortner
    • 57cb8894d2 - [rb] allow driver extension functionality to be used by Remote WebDriver :: titusfortner
    • 2823cfa05d - [rb] fix support for safari and technology preview :: titusfortner
    • 566e13f92e - [rb] remove redundant mixins from remote driver class :: titusfortner
    • 3755075427 - [rb] get correct devtools address and version local and remote :: titusfortner
    • 1a4b347300 - [rb] create multiple gemspec files :: titusfortner
    • e509e71835 - [rb] update mappings :: titusfortner
    • 19def6e692 - [rb] update devtools file generation and usage :: titusfortner
    • 0983fa4180 - [rb] add support for multiple DevTools versions :: titusfortner
    • 12ce507ccd - [rb] separate guards from conditions for more general use case :: titusfortner
    • 12102fb15f - [rb] shouldn't need to pass in a blocks to add guard conditions in specs :: titusfortner
    • 75defbc95b - [rb] add tests for new guards :: titusfortner
    • 347c30aa39 - [rb] bump versions :: titusfortner
    • 43782c2e63 - [java] Updating javadoc for timeouts :: Diego Molina
    • d39e89df9b - [java] Fixing autoformatting mistake :: Diego Molina
    • 9587249890 - [build] Set up python for pinned browsers :: AutomatedTester
    • fd4e9a7b0c - [py] Update changelog and docs for Se4b2 :: AutomatedTester
    • e8ee0f8c7c - [js] Update changelog and version numbers for Se4b2 :: AutomatedTester
    • 6419881556 - [js] remove gitlog comments from changelog :: AutomatedTester
    • b4512b24c2 - [py] Add support for chrome 89 CDP :: AutomatedTester
    • e456ab377b - [py] Remove duplication in py build deps :: AutomatedTester
    • a956044a64 - [js] Revert Change for where it gets debugger address for CDP :: AutomatedTester
    • 6e15fa92b2 - [js] Removing debugger statement :: Sri Harsha
    • c7e683e462 - [js] Add support for chrome 89 CDP :: Sri Harsha
    • 41b9b380eb - Fix small thinko in python browser tests :: Simon Stewart
    • 06f53b3b09 - [bazel] Generate a test per test file for java :: Simon Stewart
    • a2784c7738 - [bazel] Generate spotbugs tests for test code :: Simon Stewart
    • 4ec0cfc112 - Add missing target to Rakefile :: Simon Stewart
    Source code(tar.gz)
    Source code(zip)
    selenium-dotnet-4.0.0-beta2.zip(26.75 MB)
    selenium-dotnet-strongnamed-4.0.0-beta2.zip(15.72 MB)
    selenium-html-runner-4.0.0-beta-2.jar(18.05 MB)
    selenium-java-4.0.0-beta-2.zip(21.48 MB)
    selenium-server-4.0.0-beta-2.jar(22.36 MB)
Owner
Selenium
Selenium is an umbrella project for a range of tools and libraries that enable and support the automation of web browsers.
Selenium
LuluTest is a Python framework for creating automated browser tests.

LuluTest LuluTest is an open source browser automation framework using Python and Selenium. It is relatively lightweight in that it mostly provides wr

Erik Whiting 13 Dec 21, 2021
Generic automation framework for acceptance testing and RPA

Robot Framework Introduction Installation Example Usage Documentation Support and contact Contributing License Introduction Robot Framework is a gener

Robot Framework 7k May 27, 2022
A Demo of Feishu automation testing framework

FeishuAutoTestDemo This is a automation testing framework which use Feishu as an example. Execute runner.py to run. Technology Web UI Test pytest + se

null 2 Jan 14, 2022
Front End Test Automation with Pytest Framework

Front End Test Automation Framework with Pytest Installation and running instructions: 1. To install the framework on your local machine: clone the re

Sergey Kolokolov 1 Apr 4, 2022
pytest splinter and selenium integration for anyone interested in browser interaction in tests

Splinter plugin for the pytest runner Install pytest-splinter pip install pytest-splinter Features The plugin provides a set of fixtures to use splin

pytest-dev 232 Apr 27, 2022
Lightweight, scriptable browser as a service with an HTTP API

Splash - A javascript rendering service Splash is a javascript rendering service with an HTTP API. It's a lightweight browser with an HTTP API, implem

Scrapinghub 3.6k May 26, 2022
User-oriented Web UI browser tests in Python

Selene - User-oriented Web UI browser tests in Python (Selenide port) Main features: User-oriented API for Selenium Webdriver (code like speak common

Iakiv Kramarenko 532 May 26, 2022
Doggo Browser

Doggo Browser Quick Start $ python3 -m venv ./venv/ $ source ./venv/bin/activate $ pip3 install -r requirements.txt $ ./sobaki.py References Heavily I

Alexey Kutepov 9 Mar 2, 2022
Free cleverbot without headless browser

Cleverbot Scraper Simple free cleverbot library that doesn't require running a heavy ram wasting headless web browser to actually chat with the bot, a

Matheus Fillipe 2 May 5, 2022
1st Solution to QQ Browser 2021 AIAC Track 2

1st Solution to QQ Browser 2021 AIAC Track 2 This repository is the winning solution to QQ Browser 2021 AI Algorithm Competition Track 2 Automated Hyp

DAIR Lab 20 Mar 31, 2022
Browser reload with uvicorn

uvicorn-browser This project is inspired by autoreload. Installation pip install uvicorn-browser Usage Run uvicorn-browser --help to see all options.

Marcelo Trylesinski 57 May 8, 2022
FFPuppet is a Python module that automates browser process related tasks to aid in fuzzing

FFPuppet FFPuppet is a Python module that automates browser process related tasks to aid in fuzzing. Happy bug hunting! Are you fuzzing the browser? G

Mozilla Fuzzing Security 21 May 19, 2022
Repository for JIDA SNP Browser Web Application: Local Deployment

JIDA JIDA is a web application that retrieves SNP information for a genomic region of interest in Homo sapiens and calculates specific summary statist

null 3 Mar 3, 2022
A folder automation made using Watch-dog, it only works in linux for now but I assume, it will be adaptable to mac and PC as well

folder-automation A folder automation made using Watch-dog, it only works in linux for now but I assume, it will be adaptable to mac and PC as well Th

Parag Jyoti Paul 31 May 28, 2021
✅ Python web automation and testing. 🚀 Fast, easy, reliable. 💠

Build fast, reliable, end-to-end tests. SeleniumBase is a Python framework for web automation, end-to-end testing, and more. Tests are run with "pytes

SeleniumBase 2.8k May 27, 2022
Integration layer between Requests and Selenium for automation of web actions.

Requestium is a Python library that merges the power of Requests, Selenium, and Parsel into a single integrated tool for automatizing web actions. The

Tryolabs 1.7k May 28, 2022
Command line driven CI frontend and development task automation tool.

tox automation project Command line driven CI frontend and development task automation tool At its core tox provides a convenient way to run arbitrary

tox development team 2.8k May 27, 2022
Python version of the Playwright testing and automation library.

?? Playwright for Python Docs | API Playwright is a Python library to automate Chromium, Firefox and WebKit browsers with a single API. Playwright del

Microsoft 6.3k May 23, 2022
Network automation lab using nornir, scrapli, and containerlab with Arista EOS

nornir-scrapli-eos-lab Network automation lab using nornir, scrapli, and containerlab with Arista EOS. Objectives Deploy base configs to 4xArista devi

Vireak Ouk 11 May 12, 2022