1Change log 2========== 3 4All notable changes to this program are documented in this file. 5 60.30.0 (2021-09-16, `d372710b98a6`) 7------------------------------------ 8 9### Security Fixes 10 11- CVE-2021-4138 12 13 Fixed a DNS rebinding issues by enforcing a stricter `Host` header check. 14 15 Reported by Gabriel Corona. 16 17 - Improved `Host` header checks to reject requests not sent to a well-known 18 local hostname or IP, or the server-specified hostname. 19 20### Known problems 21 22- geckodriver restricts connections to local IP addresses. This can interfere 23 with deployments in which geckodriver is running on a different network node 24 to the tests e.g. some container or virtual-machine based setups. 25 26- _macOS 10.15 (Catalina) and later:_ 27 28 Due to the requirement from Apple that all programs must be 29 notarized, geckodriver will not work on Catalina if you manually 30 download it through another notarized program, such as Firefox. 31 32 Whilst we are working on a repackaging fix for this problem, you can 33 find more details on how to work around this issue in the [macOS 34 notarization] section of the documentation. 35 36- _Android:_ 37 38 For releases of Firefox 89.0 and earlier Marionette will only be enabled in 39 GeckoView based applications when the Firefox preference 40 `devtools.debugger.remote-enabled` is set to `true` via [`moz:firefoxOptions`]. 41 42### Added 43 44- Support for WebDriver clients to opt in to WebDriver BiDi. 45 46 Introduced the new boolean capability [`webSocketUrl`] that can be used by 47 WebDriver clients to opt in to a bidirectional connection. A string capability 48 with the same name will be returned by [`NewSession`], which contains the 49 WebSocket URL of the newly created WebDriver session in the form of: 50 `ws://host:port/session/<session id>`. 51 52 When running on Android a port forward will be set on the host machine, 53 which is using the exact same port as on the device. 54 55 All the supported WebDriver BiDi commands depend on the version of 56 Firefox, and not geckodriver. The first commands will be shipped in 57 Firefox 94. 58 59- It's now possible to set additional preferences when a custom profile has been 60 specified. At the end of the session they will be removed. 61 62### Fixed 63 64- Added validation that the `--host` argument resolves to a local IP address. 65 66- Limit the `--foreground` argument of Firefox to MacOS only. 67 68- Increased Marionette handshake timeout to not fail for slow connections. 69 70- `Marionette:Quit` is no longer sent twice during session deletion. 71 72- When deleting a session that was attached to an already running browser 73 instance, the browser is not getting closed anymore. 74 75- Android 76 77 - Starting Firefox on Android from a Windows based host will now succeed as 78 we are using the correct Unix path separator to construct on-device paths. 79 80 - Arguments as specified in [`moz:firefoxOptions`] are now used when starting 81 Firefox. 82 83 - Port forwards set for Marionette and the WebSocket server (WebDriver BiDi) 84 are now correctly removed when geckodriver exits. 85 86 - The test root folder is now removed when geckodriver exists. 87 88 890.29.1 (2021-04-09, `970ef713fe58`) 90------------------------------------- 91 92### Known problems 93 94- _macOS 10.15 (Catalina) and later:_ 95 96 Due to the requirement from Apple that all programs must be 97 notarized, geckodriver will not work on Catalina if you manually 98 download it through another notarized program, such as Firefox. 99 100 Whilst we are working on a repackaging fix for this problem, you can 101 find more details on how to work around this issue in the [macOS 102 notarization] section of the documentation. 103 104- _Android:_ 105 106 Marionette will only be enabled in GeckoView based applications when the 107 Firefox preference `devtools.debugger.remote-enabled` is set to `true` via 108 [`moz:firefoxOptions`]. This will be fixed in the Firefox 90 release for 109 Android. 110 111### Added 112 113- When testing GeckoView based applications on Android it's now enough to 114 specify the `androidPackage` capability. The appropriate activity name, 115 and required intent arguments will now automatically be used for 116 applications released by Mozilla. 117 118- Native AArch64 (M1) builds of geckodriver for MacOS are now available. These 119 are currently shipped as Tier2 due to missing test infrastructure. Please let 120 us know if you experience issues. 121 122### Fixed 123 124- Fixed a stack overflow crash in thread 'webdriver dispatcher' when 125 handling certain device errors. 126 127- Fixed an application crash due to missing permissions on unrooted devices 128 by changing the location of the test related files, e.g the profile folder. 129 Therefore the deprecated --android-storage command line argument 130 now defaults to the `sdcard` option, which changed its location to 131 `$EXTERNAL_STORAGE/Android/data/%androidPackage%/files/`. With this change 132 proper support for unrooted devices running Android 10+ has been added. 133 134 _Note_: Do not use the --android-storage command line argument 135 anymore unless there is a strong reason. It will be removed in a future 136 release. 137 138 1390.29.0 (2021-01-14, `cf6956a5ec8e`) 140------------------------------------ 141 142### Known problems 143 144- _macOS 10.15 (Catalina) and later:_ 145 146 Due to the requirement from Apple that all programs must be 147 notarized, geckodriver will not work on Catalina if you manually 148 download it through another notarized program, such as Firefox. 149 150 Whilst we are working on a repackaging fix for this problem, you can 151 find more details on how to work around this issue in the [macOS 152 notarization] section of the documentation. 153 154- _Android:_ 155 156 Marionette will only be enabled in GeckoView based applications when the 157 Firefox preference `devtools.debugger.remote-enabled` is set to `true` via 158 [`moz:firefoxOptions`]. This will be fixed in one of the upcoming Firefox 159 for Android releases. 160 161 In some cases geckodriver could crash due to a stack overflow when handling 162 certain device errors. 163 164 On unrooted Android 10+ devices startup crashes of the application can be 165 experienced due to an inappropriate location of test related files, e.g the 166 profile folder. 167 168### Added 169 170- Introduced the new boolean capability [`moz:debuggerAddress`] that can be used 171 to opt-in to the experimental Chrome DevTools Protocol (CDP) implementation. 172 A string capability with the same name will be returned by [`NewSession`], 173 which contains the `host:port` combination of the HTTP server that can be 174 used to query for websockets of available targets. 175 176 Note: For this experimental feature the site-isolation support of 177 Firefox aka [Fission] will be not available. 178 1790.28.0 (2020-11-03, `c00d2b6acd3f`) 180------------------------------------ 181 182### Known problems 183 184- _macOS 10.15 (Catalina) and later:_ 185 186 Due to the requirement from Apple that all programs must be 187 notarized, geckodriver will not work on Catalina if you manually 188 download it through another notarized program, such as Firefox. 189 190 Whilst we are working on a repackaging fix for this problem, you can 191 find more details on how to work around this issue in the [macOS 192 notarization] section of the documentation. 193 194- _Android:_ 195 196 Marionette will only be enabled in GeckoView based applications when the 197 Firefox preference `devtools.debugger.remote-enabled` is set to `true` via 198 [`moz:firefoxOptions`]. This will be fixed in one of the upcoming Firefox 199 for Android releases. 200 201 In some cases geckodriver could crash due to a stack overflow when handling 202 certain device errors. 203 204 On unrooted Android 10+ devices startup crashes of the application can be 205 experienced due to an inappropriate location of test related files, e.g the 206 profile folder. 207 208### Added 209 210- The command line flag `--android-storage` has been added, to allow geckodriver 211 to also control Firefox on root-less Android devices. 212 See the [documentation][Flags] for available values. 213 214### Fixed 215 216- Firefox can be started again via a shell script that is located outside of the 217 Firefox directory on Linux. 218 219- If Firefox cannot be started by geckodriver the real underlying error message is 220 now being reported. 221 222- Version numbers for minor and extended support releases of Firefox are now parsed correctly. 223 224### Removed 225 226- Since Firefox 72 extension commands for finding an element’s anonymous children 227 and querying its attributes are no longer needed, and have been removed. 228 2290.27.0 (2020-07-27, `7b8c4f32cdde`) 230------------------------------------ 231 232### Security Fixes 233 234- CVE-2020-15660 235 236 Improved validation of incoming requests to prevent remote 237 requests being treated as local. 238 239 Reported by Gabriel Corona. 240 241 - Added additional checks on the `Content-Type` header for `POST` 242 requests to disallow `application/x-www-form-urlencoded`, 243 `multipart/form-data` and `text/plain`. 244 245 - Added checking of the `Origin` header for `POST` requests. 246 247 - The version number of Firefox is now checked when establishing a session. 248 249### Known problems 250 251- _macOS 10.15 (Catalina) and later:_ 252 253 Due to the requirement from Apple that all programs must be 254 notarized, geckodriver will not work on Catalina if you manually 255 download it through another notarized program, such as Firefox. 256 257 Whilst we are working on a repackaging fix for this problem, you can 258 find more details on how to work around this issue in the [macOS 259 notarization] section of the documentation. 260 261- _Android:_ 262 263 Marionette will only be enabled in GeckoView based applications when the 264 Firefox preference `devtools.debugger.remote-enabled` is set to `true` via 265 [`moz:firefoxOptions`]. This will be fixed in one of the upcoming Firefox 266 for Android releases. 267 268 In some cases geckodriver could crash due to a stack overflow when handling 269 certain device errors. 270 271### Added 272 273- To set environment variables for the launched Firefox for Android, 274 it is now possible to add an `env` object on [`moz:firefoxOptions`] 275 (note: this is not supported for Firefox Desktop) 276 277- Support for print-to-PDF 278 279 The newly standardised WebDriver [Print] endpoint provides a way to 280 render pages to a paginated PDF representation. This endpoint is 281 supported by geckodriver when using Firefox version ≥78. 282 283- Support for same-site cookies 284 285 Cookies can now be set with a `same-site` parameter, and the value 286 of that parameter will be returned when cookies are 287 retrieved. Requires Firefox version ≥79. Thanks to [Peter Major] for 288 the patch. 289 290### Fixed 291 292- _Android:_ 293 294 * Firefox running on Android devices can now be controlled from a Windows host. 295 296 * Setups with multiple connected Android devices are now supported. 297 298 * Improved cleanup of configuration files. This prevents crashes if 299 the application is started manually after launching it through 300 geckodriver. 301 302- Windows and Linux binaries are again statically linked. 303 3040.26.0 (2019-10-12, `e9783a644016'`) 305------------------------------------- 306 307Note that with this release the minimum recommended Firefox version 308has changed to Firefox ≥60. 309 310### Known problems 311 312- _macOS 10.15 (Catalina) and later:_ 313 314 Due to the recent requirement from Apple that all programs must 315 be notarized, geckodriver will not work on Catalina if you manually 316 download it through another notarized program, such as Firefox. 317 318 Whilst we are working on a repackaging fix for this problem, you 319 can find more details on how to work around this issue in the 320 [macOS notarization] section of the documentation. 321 322- _Windows:_ 323 324 You must still have the [Microsoft Visual Studio redistributable 325 runtime] installed on your system for the binary to run. This 326 is a known bug which we weren't able fix for this release. 327 328- _Android:_ 329 330 Marionette will only be enabled in GeckoView based applications when the 331 Firefox preference `devtools.debugger.remote-enabled` is set to `true` via 332 [`moz:firefoxOptions`]. This will be fixed in one of the upcoming Firefox 333 for Android releases. 334 335 In some cases geckodriver could crash due to a stack overflow when handling 336 certain device errors. 337 338### Added 339 340- Support for Firefox on Android 341 342 Starting with this release geckodriver is able to connect to 343 Firefox on Android systems, and to control packages based on 344 [GeckoView]. 345 346 Support for Android works by the geckodriver process running on 347 a host system and Firefox running within either an emulator or 348 on a physical device connected to the host system. This requires 349 you to first [enable remote debugging on the Android device]. 350 351 The WebDriver client must set the [`platformName` capability] to 352 "`android`" and the `androidPackage` capability within 353 [`moz:firefoxOptions`] to the Android package name of the Firefox 354 application. 355 356 The full list of new capabilities specific to Android, instructions 357 how to use them, and examples can be found in the [`moz:firefoxOptions`] 358 documentation on MDN. 359 360 When the session is created, the `platformName` capability will 361 return "`android`" instead of reporting the platform of the host 362 system. 363 364### Changed 365 366- Continued Marionette refactoring changes 367 368 0.25.0 came with a series of internal changes for how geckodriver 369 communicates with Firefox over the Marionette protocol. This 370 release contains the second half of the refactoring work. 371 372### Fixed 373 374- Connection attempts to Firefox made more reliable 375 376 geckodriver now waits for the Marionette handshake before assuming 377 the session has been established. This should improve reliability 378 in creating new WebDriver sessions. 379 380- Corrected error codes used during session creation 381 382 When a new session was being configured with invalid input data, 383 the error codes returned was not always consistent. Attempting 384 to start a session with a malformed capabilities configuration 385 will now return the [`invalid argument`] error consistently. 386 387 3880.25.0 (2019-09-09, `bdb64cf16b68`) 389----------------------------------- 390 391__Note to Windows users!__ 392With this release you must have the [Microsoft Visual Studio redistributable runtime] 393installed on your system for the binary to run. 394This is a [known bug](https://github.com/mozilla/geckodriver/issues/1617) 395with this particular release that we intend to release a fix for soon. 396 397### Added 398 399- Added support for HTTP `HEAD` requests to the HTTPD 400 401 geckodriver now responds correctly to HTTP `HEAD` requests, 402 which can be used for probing whether it supports a particular API. 403 404 Thanks to [Bastien Orivel] for this patch. 405 406- Added support for searching for Nightly’s default path on macOS 407 408 If the location of the Firefox binary is not given, geckodriver 409 will from now also look for the location of Firefox Nightly in 410 the default locations. The ordered list of search paths on macOS 411 is as follows: 412 413 1. `/Applications/Firefox.app/Contents/MacOS/firefox-bin` 414 2. `$HOME/Applications/Firefox.app/Contents/MacOS/firefox-bin` 415 3. `/Applications/Firefox Nightly.app/Contents/MacOS/firefox-bin` 416 4. `$HOME/Applications/Firefox Nightly.app/Contents/MacOS/firefox-bin` 417 418 Thanks to [Kriti Singh] for this patch. 419 420- Support for application bundle paths on macOS 421 422 It is now possible to pass an application bundle path, such as 423 `/Applications/Firefox.app` as argument to the `binary` field in 424 [`moz:firefoxOptions`]. This will be automatically resolved to 425 the absolute path of the binary when Firefox is started. 426 427 Thanks to [Nupur Baghel] for this patch. 428 429- macOS and Windows builds are signed 430 431 With this release of geckodriver, executables for macOS and Windows 432 are signed using the same certificate key as Firefox. This should 433 help in cases where geckodriver previously got misidentified as 434 a virus by antivirus software. 435 436### Removed 437 438- Dropped support for legacy Selenium web element references 439 440 The legacy way of serialising web elements, using `{"ELEMENT": <UUID>}`, 441 has been removed in this release. This may break older Selenium 442 clients and clients which are otherwise not compatible with the 443 WebDriver standard. 444 445 Thanks to [Shivam Singhal] for this patch. 446 447- Removed `--webdriver-port` command-line option 448 449 `--webdriver-port <PORT>` was an undocumented alias for `--port`, 450 initially used for backwards compatibility with clients 451 prior to Selenium 3.0.0. 452 453### Changed 454 455- Refactored Marionette serialisation 456 457 Much of geckodriver’s internal plumbing for serialising WebDriver 458 requests to Marionette messages has been refactored to decrease 459 the amount of manual lifting. 460 461 This work should have no visible side-effects for users. 462 463 Thanks to [Nupur Baghel] for working on this throughout her 464 Outreachy internship at Mozilla. 465 466- Improved error messages for incorrect command-line usage 467 468### Fixed 469 470- Errors related to incorrect command-line usage no longer hidden 471 472 By mistake, earlier versions of geckodriver failed to print incorrect 473 flag use. With this release problems are again written to stderr. 474 475- Search system path for Firefox binary on BSDs 476 477 geckodriver would previously only search the system path for the 478 `firefox` binary on Linux. Now it supports different BSD flavours 479 as well. 480 481 4820.24.0 (2019-01-28, `917474f3473e`) 483----------------------------------- 484 485### Added 486 487- Introduces `strictFileInteractability` capability 488 489 The new capability indicates if strict interactability checks 490 should be applied to `<input type=file>` elements. As strict 491 interactability checks are off by default, there is a change 492 in behaviour when using [Element Send Keys] with hidden file 493 upload controls. 494 495- Added new endpoint `GET /session/{session id}/moz/screenshot/full` 496 for taking full document screenshots, thanks to Greg Fraley. 497 498- Added new `--marionette-host <hostname>` flag for binding to a 499 particular interface/IP layer on the system. 500 501- Added new endpoint `POST /session/{session_id}/window/new` 502 for the [New Window] command to create a new top-level browsing 503 context, which can be either a window or a tab. The first version 504 of Firefox supporting this command is Firefox 66.0. 505 506- When using the preference `devtools.console.stdout.content` set to 507 `true` logging of console API calls like `info()`, `warn()`, and 508 `error()` can be routed to stdout. 509 510- geckodriver now sets the `app.update.disabledForTesting` preference 511 to prevent Firefox >= 65 from automatically updating whilst under 512 automation. 513 514### Removed 515 516- ARMv7 HF builds have been discontinued 517 518 We announced back in September 2018 that we would stop building for ARM, 519 but builds can be self-serviced by building from source. 520 521 To cross-compile from another host system, you can use this command: 522 523 % cargo build --target armv7-unknown-linux-gnueabihf 524 525### Changed 526 527- Allow file uploads to hidden `<input type=file>` elements 528 529 Through a series of changes to the WebDriver specification, 530 geckodriver is now aligned with chromedriver’s behaviour that 531 allows interaction with hidden `<input type=file>` elements. 532 533 This allows WebDriver to be used with various popular web 534 frameworks that—through indirection—hides the file upload control 535 and invokes it through other means. 536 537- Allow use of an indefinite script timeout for the [Set Timeouts] 538 command, thanks to reimu. 539 540### Fixed 541 542- Corrected `Content-Type` of response header to `utf-8` to fix 543 an HTTP/1.1 compatibility bug. 544 545- Relaxed the deserialization of timeouts parameters to allow unknown 546 fields for the [Set Timeouts] command. 547 548- Fixed a regression in the [Take Element Screenshot] to not screenshot 549 the viewport, but the requested element. 550 551 5520.23.0 (2018-10-03) 553------------------- 554 555This release contains a number of fixes for regressions introduced 556in 0.22.0, where we shipped a significant refactoring to the way 557geckodriver internally dealt with JSON serialisation. 558 559### Removed 560 561- The POST `/session/{session id}/element/{element id}/tap` endpoint 562 was removed, thanks to Kerem Kat. 563 564### Changed 565 566- [webdriver crate] upgraded to 0.38.0. 567 568### Fixed 569 570- `desiredCapabilities` and `requiredCapabilities` are again 571 recognised on session creation 572 573 A regression in 0.22.0 caused geckodriver to recognise `desired` 574 and `required` instead of the correct `desiredCapabilities` 575 and `requiredCapabilities`. This will have caused significant 576 problems for users who relied on this legacy Selenium-style 577 session creation pattern. 578 579 Do however note that support for Selenium-styled new session 580 requests is temporary and that this will be removed sometime 581 before the 1.0 release. 582 583- `duration` field made optional on pause actions 584 585 A regression in 0.22.0 caused the pause action primitive to 586 require a `duration` field. This has now been fixed so that 587 pauses in action chains can be achieved with the default duration. 588 589- Log level formatted to expected Marionette input 590 591 A regression in 0.22.0 caused the log level to be improperly 592 formatted when using Firefox pre-releases. This is now fixed so 593 that the requested log level is correctly interpreted by Marionette. 594 595- `temporary` field on addon installation made optional 596 597 A regression in 0.22.0 caused the `temporary` field for POST 598 `/session/{session id}/moz/addon/install` to be mandatory. This has 599 now been fixed so that an addon is installed permanently by default. 600 601- SHA1s in version information uses limited number of characters 602 603 The SHA1 used in `--version` when building geckodriver from a 604 git repository is now limited to 12 characters, as it is when 605 building from an hg checkout. This ensures reproducible builds. 606 607 6080.22.0 (2018-09-15) 609------------------- 610 611This release marks an important milestone on the path towards 612a stable release of geckodriver. Large portions of geckodriver 613and the [webdriver] library it is based on has been refactored to 614accommodate using [serde] for JSON serialization. 615 616We have also made great strides to improving [WebDriver conformance], 617to the extent that geckodriver is now _almost_ entirely conforming 618to the standard. 619 620### Added 621 622- Support for WebDriver web element-, web frame-, and web window 623 identifiers from Firefox. 624 625- Added support for the non-configurable `setWindowRect` capability 626 from WebDriver. 627 628 This capability informs whether the attached browser supports 629 manipulating the window dimensions and position. 630 631- A new extension capability `moz:geckodriverVersion` is returned 632 upon session creation. 633 634### Changed 635 636- All JSON serialization and deserialisation has moved from 637 rustc_serialize to [serde]. 638 639- The HTTP status codes used for [script timeout] and [timeout] 640 errors has changed from Request Timeout (408) to Internal Server 641 Error (500) in order to not break HTTP/1.1 `Keep-Alive` support, 642 as HTTP clients interpret the old status code to mean they should 643 duplicate the request. 644 645- The HTTP/1.1 `Keep-Alive` timeout for persistent connections has 646 been increased to 90 seconds. 647 648- An [invalid session ID] error is now returned when there is no 649 active session. 650 651- An [invalid argument] error is now returned when [Add Cookie] 652 is given invalid parameters. 653 654- The handshake when geckodriver connects to Marionette has been 655 hardened by killing the Firefox process if it fails. 656 657- The handshake read timeout has been reduced to 10 seconds instead 658 of waiting forever. 659 660- The HTTP server geckodriver uses, [hyper], has been upgraded to 661 version 0.12, thanks to [Bastien Orivel]. 662 663- geckodriver version number is no longer logged on startup, as 664 the log level is not configured until a session is created. 665 666 The version number is available through `--version`, and now 667 also through a new `moz:geckodriverVersion` field in the matched 668 capabilities. 669 670- [webdriver crate] upgraded to 0.37.0. 671 672### Fixed 673 674- Parsing [timeout object] values has been made WebDriver conforming, 675 by allowing floats as input. 676 677- Implicit downloads of OpenH264 and Widevine plugins has been disabled. 678 679- The commit hash and date displayed when invoking `--version` 680 is now well-formatted when built from an hg repository, thanks to 681 [Jeremy Lempereur]. 682 683- Many documentation improvements, now published on 684 https://firefox-source-docs.mozilla.org/testing/geckodriver/. 685 686 6870.21.0 (2018-06-15) 688------------------- 689 690Note that with this release of geckodriver the minimum recommended 691Firefox and Selenium versions have changed: 692 693 - Firefox 57 (and greater) 694 - Selenium 3.11 (and greater) 695 696### Added 697 698- Support for the chrome element identifier from Firefox. 699 700- The `unhandledPromptBehavior` capability now accepts `accept and 701 notify`, `dismiss and notify`, and `ignore` options. 702 703 Note that the unhandled prompt handler is not fully supported in 704 Firefox at the time of writing. 705 706### Changed 707 708- Firefox will now be started with the `-foreground` and `-no-remote` 709 flags if they have not already been specified by the user in 710 [`moz:firefoxOptions`]. 711 712 `-foreground` will ensure the application window gets focus when 713 Firefox is started, and `-no-remote` will prevent remote commands 714 to this instance of Firefox and also ensure we always start a new 715 instance. 716 717- WebDriver commands that do not have a return value now correctly 718 return `{value: null}` instead of an empty dictionary. 719 720- The HTTP server now accepts `Keep-Alive` connections. 721 722- Firefox remote protocol command mappings updated. 723 724 All Marionette commands changed to make use of the `WebDriver:` 725 prefixes introduced with Firefox 56. 726 727- Overhaul of Firefox preferences. 728 729 Already deprecated preferences in Firefox versions earlier than 730 57 got removed. 731 732- [webdriver crate] upgraded to 0.36.0. 733 734### Fixed 735 736- Force use of IPv4 network stack. 737 738 On certain system configurations, where `localhost` resolves to 739 an IPv6 address, geckodriver would attempt to connect to Firefox 740 on the wrong IP stack, causing the connection attempt to time out 741 after 60 seconds. We now ensure that geckodriver uses IPv4 742 consistently to both connect to Firefox and for allocating a free 743 port. 744 745- geckodriver failed to locate the correct Firefox binary if it was 746 found under a _firefox_ or _firefox-bin_ directory, depending on 747 the system, because it thought the parent directory was the 748 executable. 749 750- On Unix systems (macOS, Linux), geckodriver falsely reported 751 non-executable files as valid binaries. 752 753- When stdout and stderr is redirected by geckodriver, a bug prevented 754 the redirections from taking effect. 755 756 7570.20.1 (2018-04-06) 758------------------- 759 760### Fixed 761 762- Avoid attempting to kill Firefox process that has stopped. 763 764 With the change to allow Firefox enough time to shut down in 765 0.20.0, geckodriver started unconditionally killing the process 766 to reap its exit status. This caused geckodriver to inaccurately 767 report a successful Firefox shutdown as a failure. 768 769 The regression should not have caused any functional problems, but 770 the termination cause and the exit status are now reported correctly. 771 772 7730.20.0 (2018-03-08) 774------------------- 775 776### Added 777 778- New `--jsdebugger` flag to open the [Browser Toolbox] when Firefox 779 launches. This is useful for debugging Marionette internals. 780 781- Introduced the temporary, boolean capability 782 `moz:useNonSpecCompliantPointerOrigin` to disable the WebDriver 783 conforming behavior of calculating the Pointer Origin. 784 785### Changed 786 787- HTTP status code for the [`StaleElementReference`] error changed 788 from 400 (Bad Request) to 404 (Not Found). 789 790- Backtraces from geckodriver no longer substitute for missing 791 Marionette stacktraces. 792 793- [webdriver crate] upgraded to 0.35.0. 794 795### Fixed 796 797- The Firefox process is now given ample time to shut down, allowing 798 enough time for the Firefox shutdown hang monitor to kick in. 799 800 Firefox has an integrated background monitor that observes 801 long-running threads during shutdown. These threads will be 802 killed after 63 seconds in the event of a hang. To allow Firefox 803 to shut down these threads on its own, geckodriver has to wait 804 that time and some additional seconds. 805 806- Grapheme clusters are now accepted as input for keyboard input 807 to actions. 808 809 Input to the `value` field of the `keyDown` and `keyUp` action 810 primitives used to only accept single characters, which means 811 geckodriver would error when a valid grapheme cluster was sent in, 812 for example with the tamil nadu character U+0BA8 U+0BBF. 813 814 Thanks to Greg Fraley for fixing this bug. 815 816- Improved error messages for malformed capability values. 817 818 8190.19.1 (2017-10-30) 820------------------- 821 822### Changed 823 824- Search suggestions in the location bar turned off as not to 825 trigger network connections 826 827- Block addons incompatible with E10s 828 829### Fixed 830 831- Marionette stacktraces are now correctly propagated 832 833- Some error messages have been clarified 834 835### Removed 836 837- Removed obsolete `socksUsername` and `socksPassword` proxy 838 configuration keys because neither were picked up or recognised 839 840 8410.19.0 (2017-09-16) 842------------------- 843 844Note that with geckodriver 0.19.0 the following versions are recommended: 845- Firefox 55.0 (and greater) 846- Selenium 3.5 (and greater) 847 848### Added 849 850- Added endpoint: 851 - POST `/session/{session id}/window/minimize` for the [Minimize Window] 852 command 853 854- Added preference `extensions.shield-recipe-client.api_url` to disable 855 shield studies which could unexpectedly change the behavior of Firefox 856 857- Introduced the temporary, boolean capability `moz:webdriverClick` to 858 enable the WebDriver conforming behavior of the [Element Click] command 859 860- Added crashreporter environment variables to better control the browser 861 in case of crashes 862 863- Added preference `dom.file.createInChild` set to true to allow file 864 object creation in content processes 865 866### Changed 867 868- Log all used application arguments and not only `-marionette` 869 870- Early abort connection attempts to Marionette if the Firefox process 871 closed unexpectetly 872 873- Removed deprecated `socksProxyVersion` in favor of `socksVersion` 874 875- Removed `ftpProxyPort`, `httpProxyPort`, `sslProxyPort`, and 876 `socksProxyPort` because _ports_ have to be set for `ftpProxy`, 877 `httpProxy`, `sslProxy`, and `socksProxy` using ":<PORT>" 878 879- The `proxyType` `noproxy` has been replaced with `direct` in accordance 880 with recent WebDriver specification changes 881 882- The [`WindowRectParameters`] have been updated to return signed 32-bit 883 integers in accordance with the CSS and WebDriver specifications, and 884 to be more liberal with the input types 885 886- Mapped the [`FullscreenWindow`] to the correct Marionette command 887 888- To make sure no browser process is left behind when the [`NewSession`] 889 fails, the process is closed immediately now 890 891- `/moz/addon/install` command accepts an `addon` parameter, in lieu of 892 `path`, containing an addon as a Base64 string (fixed by [Jason Juang]) 893 894- [webdriver crate] upgraded to version 0.31.0 895 896- [mozrunner crate] upgraded to version 0.5.0 897 898### Removed 899 900- Removed the following obsolete preferences for Firefox: 901 - `browser.safebrowsing.enabled` 902 - `browser.safebrowsing.forbiddenURIs.enabled` 903 - `marionette.defaultPrefs.port` 904 - `marionette.logging` 905 906 9070.18.0 (2017-07-10) 908------------------- 909 910### Changed 911 912- [`RectResponse`] permits returning floats for `width` and `height` 913 fields 914 915- New type [`CookieResponse`] for the [`GetNamedCookie`] command returns 916 a single cookie, as opposed to an array of a single cookie 917 918- To pick up a prepared profile from the filesystem, it is now possible 919 to pass `["-profile", "/path/to/profile"]` in the `args` array on 920 [`moz:firefoxOptions`] 921 922- geckodriver now recommends Firefox 53 and greater 923 924- Version information (`--version`) contains the hash from from the 925 commit used to build geckodriver 926 927- geckodriver version logged on startup 928 929- [webdriver crate] upgraded to version 0.27.0 930 931- [mozrunner crate] upgraded to version 0.4.1 932 933### Fixed 934 935- The [`SetTimeouts`] command maps to the Marionette `setTimeouts` 936 command, which makes geckodriver compatible with Firefox 56 and greater 937 938- Linux x86 (i686-unknown-linux-musl) builds are fixed 939 940 9410.17.0 (2017-06-09) 942------------------- 943 944### Added 945 946- Added endpoints: 947 - POST `/session/{session id}/window/fullscreen` to invoke the window 948 manager-specific `full screen` operation 949 - POST `/session/{session id}/moz/addon/install` to install an extension 950 (Gecko only) 951 - POST `/session/{session id}/moz/addon/uninstall` to uninstall an 952 extension (Gecko only) 953 954### Changed 955 956- Increasing the length of the `network.http.phishy-userpass-length` 957 preference will cause Firefox to not prompt when navigating to a 958 website with a username or password in the URL 959 960- Library dependencies upgraded to mozrunner 0.4 and mozprofile 0.3 961 to allow overriding of preferences via capabilities if those have been 962 already set in the profile 963 964- Library dependencies upgraded to mozversion 0.1.2 to only use the 965 normalized path of the Firefox binary for version checks but not to 966 actually start the browser, which broke several components in Firefox 967 on Windows 968 969### Fixed 970 971- The [SetWindowRect] command now returns the [WindowRectResponse] 972 when it is done 973 974- Use ASCII versions of array symbols to properly display them in the 975 Windows command prompt 976 977- Use [`SessionNotCreated`] error instead of [`UnknownError`] if there 978 is no current session 979 980 9810.16.1 (2017-04-26) 982------------------- 983 984### Fixed 985 986- Read Firefox version number from stdout when failing 987 to look for the application .ini file (fixes [Selenium 988 #3884](https://github.com/SeleniumHQ/selenium/issues/3884)) 989 990- Session is now ended when closing the last Firefox window (fixes 991 [#613](https://github.com/mozilla/geckodriver/issues/613)) 992 993 9940.16.0 (2017-04-21) 995------------------- 996 997Note that geckodriver v0.16.0 is only compatible with Selenium 3.4 998and greater. 999 1000### Added 1001 1002- Support for WebDriver-conforming [New Session] negotiation, with 1003 `desiredCapabilities`/`requiredCapabilities` negotiation as fallback 1004 1005- Added two new endpoints: 1006 - GET `/session/{session id}/window/rect` for [Get Window Rect] 1007 - POST `/session/{session id}/window/rect` for [Set Window Rect] 1008 1009- Align errors with the [WebDriver errors]: 1010 - Introduces new errors [`ElementClickIntercepted`], 1011 [`ElementNotInteractable`], [`InvalidCoordinates`], [`NoSuchCookie`], 1012 [`UnableToCaptureScreen`], and [`UnknownCommand`] 1013 - Removes `ElementNotVisible` and `InvalidElementCoordinates` errors 1014 1015### Removed 1016 1017- Removed following list of unused endpoints: 1018 - GET `/session/{session id}/alert_text` 1019 - POST `/session/{session id}/alert_text` 1020 - POST `/session/{session id}/accept_alert` 1021 - POST `/session/{session id}/dismiss_alert` 1022 - GET `/session/{session id}/window_handle` 1023 - DELETE `/session/{session id}/window_handle` 1024 - POST `/session/{session id}/execute_async` 1025 - POST `/session/{session id}/execute` 1026 1027### Changed 1028 1029- [`SendKeysParameters`], which is used for the [Element Send Keys] and 1030 [Send Alert Text] commands, has been updated to take a string `text` 1031 field 1032 1033- [`CookieResponse`] and [`CloseWindowResponse`] fixed to be properly 1034 wrapped in a `value` field, like other responses 1035 1036- Allow negative numbers for `x` and `y` fields in `pointerMove` action 1037 1038- Disable Flash and the plugin container in Firefox by 1039 default, which should help mitigate the “Plugin Container 1040 for Firefox has stopped working” problems [many users were 1041 reporting](https://github.com/mozilla/geckodriver/issues/225) when 1042 deleting a session 1043 1044- Preferences passed in a profile now take precedence over 1045 set of default preferences defined by geckodriver (fixed by 1046 [Marc Fisher](https://github.com/DrMarcII)) 1047 - The exceptions are the `marionette.port` and `marionette.log.level` 1048 preferences and their fallbacks, which are set unconditionally and 1049 cannot be overridden 1050 1051- Remove default preference that disables unsafe CPOW checks 1052 1053- WebDriver library updated to 0.25.2 1054 1055### Fixed 1056 1057- Fix for the “corrupt deflate stream” exception that 1058 sometimes occurred when trying to write an empty profile by 1059 [@kirhgoph](https://github.com/kirhgoph) 1060 1061- Recognise `sslProxy` and `sslProxyPort` entries in the proxy 1062 configuration object (fixed by [Jason Juang]) 1063 1064- Fix “`httpProxyPort` was not an integer” error (fixed by [Jason 1065 Juang]) 1066 1067- Fix broken unmarshaling of _Get Timeouts_ response format from Firefox 1068 52 and earlier (fixed by [Jason Juang]) 1069 1070- Allow preferences in [`moz:firefoxOptions`] to be both positive- and 1071 negative integers (fixed by [Jason Juang]) 1072 1073- Allow IPv6 hostnames in the proxy configuration object 1074 1075- i686-unknown-linux-musl (Linux 32-bit) build fixed 1076 1077- Log messages from other Rust modules are now ignored 1078 1079- Improved log messages to the HTTPD 1080 1081 10820.15.0 (2017-03-08) 1083------------------- 1084 1085### Added 1086 1087- Added routing and parsing for the [Get Timeouts] command 1088 1089### Changed 1090 1091- All HTTP responses are now wrapped in `{value: …}` objects per the 1092 WebDriver specification; this may likely require you to update your 1093 client library 1094 1095- Pointer move action’s `element` key changed to `origin`, which 1096 lets pointer actions originate within the context of the viewport, 1097 the pointer’s current position, or from an element 1098 1099- Now uses about:blank as the new tab document; this was previously 1100 disabled due to [bug 1333736](https://bugzil.la/1333736) in Marionette 1101 1102- WebDriver library updated to 0.23.0 1103 1104### Fixed 1105 1106- Aligned the data structure accepted by the [Set Timeouts] command with 1107 the WebDriver specification 1108 1109 11100.14.0 (2017-01-31) 1111------------------- 1112 1113### Changed 1114 1115- Firefox process is now terminated and session ended when the last 1116 window is closed 1117 1118- WebDriver library updated to version 0.20.0 1119 1120### Fixed 1121 1122- Stacktraces are now included when the error originates from within 1123 the Rust stack 1124 1125- HTTPD now returns correct response headers for `Content-Type` and 1126 `Cache-Control` thanks to [Mike Pennisi] 1127 1128 11290.13.0 (2017-01-06) 1130------------------- 1131 1132### Changed 1133 1134- When navigating to a document with an insecure- or otherwise invalid 1135 TLS certificate, an [insecure certificate] error will be returned 1136 1137- On macOS, deducing Firefox’ location on the system will look for 1138 _firefox-bin_ on the system path (`PATH` environmental variable) before 1139 looking in the applications folder 1140 1141- Window position coordinates are allowed to be negative numbers, to 1142 cater for maximised window positioning on Windows 1143 1144- WebDriver library updated to version 0.18.0 1145 1146### Fixed 1147 1148- Check for single-character key codes in action sequences now counts 1149 characters instead of bytes 1150 1151 11520.12.0 (2017-01-03) 1153------------------- 1154 1155### Added 1156 1157- Added [Take Element Screenshot] command 1158 1159- Added new [Status] command 1160 1161- Added routing for the [Get Timeouts] command, but it is not yet 1162 implemented in Marionette, and will return an _unsupported operation_ 1163 error until it is 1164 1165- Implemented routing for [new actions API](Actions), but it too is not 1166 yet fully implemented in Marionette 1167 1168### Changed 1169 1170- [Synced Firefox 1171 preferences](https://github.com/mozilla/geckodriver/commit/2bfdc3ec8151c427a6a75a6ba3ad203459540495) 1172 with those used in Mozilla automation 1173 1174- Default log level for debug builds of Firefox, which used to be `DEBUG`, 1175 changed to `INFO`-level 1176 1177- WebDriver library dependency upgraded to 0.17.1 1178 1179- Using _session not created_ error when failing to start session 1180 1181- geckodriver will exit with exit code 69 to indicate that the port 1182 is unavailable 1183 1184### Fixed 1185 1186- Improved logging when starting Firefox 1187 1188- Reverted to synchronous logging, which should address cases of 1189 inconsistent output when failing to bind to port 1190 1191- Clarified in README that geckodriver is not supported on Windows XP 1192 1193- Added documentation of supported capabilities to [README] 1194 1195- Included capabilities example in the [README] 1196 1197 11980.11.1 (2016-10-10) 1199------------------- 1200 1201### Fixed 1202 1203- Version number in binary now reflects the release version 1204 1205 12060.11.0 (2016-10-10) 1207------------------- 1208 1209### Added 1210 1211- Introduced continuous integration builds for Linux- and Windows 32-bit 1212 binaries 1213 1214- Added commands for setting- and getting the window position 1215 1216- Added new extension commands for finding an element’s anonymous 1217 children and querying its attributes; accessible through the 1218 `/session/{sessionId}/moz/xbl/{elementId}/anonymous_children` 1219 to return all anonymous children and 1220 `/session/{sessionId}/moz/xbl/{elementId}/anonymous_by_attribute` to 1221 return an anonymous element by a name and attribute query 1222 1223- Introduced a [`moz:firefoxOptions`] capability to customise a Firefox 1224 session: 1225 1226 - The `binary`, `args`, and `profile` entries on this dictionary 1227 is equivalent to the old `firefox_binary`, `firefox_args`, and 1228 `firefox_profile` capabilities, which have now all been removed 1229 1230 - The `log` capability takes a dictionary such as `{log: "trace"}` 1231 to enable trace level verbosity in Gecko 1232 1233 - The `prefs` capability lets you define Firefox preferences through 1234 capabilities 1235 1236- Re-introduced the `--webdriver-port` argument as a hidden alias to 1237 `--port` 1238 1239### Changed 1240 1241- `firefox_binary`, `firefox_args`, and `firefox_profile` capabilities 1242 removed in favour of the [`moz:firefoxOptions`] dictionary detailed above 1243 and in the [README] 1244 1245- Removed `--no-e10s` flag, and geckodriver will from now rely on the 1246 Firefox default multiprocessing settings (override using preferences) 1247 1248- Disable pop-up blocker in the default profile by @juangj 1249 1250- Changed Rust compiler version to 1.12 (beta) 1251 temporarily because of [trouble linking Musl 1252 binaries](https://github.com/rust-lang/rust/issues/34978) 1253 1254- Replaced _env_logger_ logging facility with the _slog_ package, 1255 causing the `RUST_LOG` environment variable to no longer have any affect 1256 1257- Updated the WebDriver Rust library to version 0.15 1258 1259### Fixed 1260 1261- Corrected link to repository in Cargo metadata 1262 1263- Verbosity shorthand flag `-v[v]` now works again, following the 1264 replacement of the argument parsing library in the previous release 1265 1266- When the HTTPD fails to start, errors are propagated to the user 1267 1268- Disabled the additional welcome URL 1269 (`startup.homepage_welcome_url.additional`) so that officially branded 1270 Firefox builds do not start with two open tabs in fresh profiles 1271 1272- Disabled homepage override URL redirection on milestone upgrades, 1273 which means a tab with an upgrade notice is not displayed when launching 1274 a new Firefox version 1275 1276 12770.10.0 (2016-08-02) 1278------------------- 1279 1280### Changed 1281 1282- Use multi-process Firefox (e10s) by default, added flag `--no-e10s` 1283 to disable it and removed `--e10s` flag 1284 1285- Disable autofilling of forms by default by [Sven Jost] 1286 1287- Replace _argparse_ with _clap_ for arguments parsing 1288 1289### Fixed 1290 1291- Attempt to deploy a single file from Travis when making a release 1292 1293- Grammar fix in [README] 1294 1295 12960.9.0 (2016-06-30) 1297------------------ 1298 1299### Added 1300 1301- Add ability to use `firefox_binary` capability to define location of 1302 Firefox to use 1303 1304- Automatically detect the default Firefox path if one is not given 1305 1306- Cross-compile to Windows and ARMv7 (HF) in CI 1307 1308- Add Musl C library-backed static binaries in CI 1309 1310- Add `-v`, `-vv`, and `--log LEVEL` flags to increase Gecko verbosity 1311 1312- Add Get Element Property endpoint 1313 1314- Add new `--version` flag showing copying information and a link to 1315 the repository 1316 1317### Changed 1318 1319- Now connects to a Marionette on a random port by default 1320 1321- Update webdriver-rust library dependency 1322 1323- Migrated to use Travis to deploy new releases 1324 1325- Reduced amount of logging 1326 1327- Introduced a changelog (this) 1328 1329 13300.8.0 (2016-06-07) 1331------------------ 1332 1333### Added 1334 1335- Allow specifying array of arguments to the Firefox binary through the 1336 `firefox_args` capability 1337 1338- Pass parameters with [New Session] command 1339 1340### Changed 1341 1342- Change product name to _geckodriver_ 1343 1344- Make README more exhaustive 1345 1346- Quit Firefox when deleting a session 1347 1348- Update webdriver-rust library 1349 1350- Update dependencies 1351 1352### Fixed 1353 1354- Fix tests 1355 1356- FIx typo in error message for parsing errors 1357 1358 13590.7.1 (2016-04-27) 1360------------------ 1361 1362### Added 1363 1364- Add command line flag for using e10s enabled Firefox by [Kalpesh 1365 Krishna] 1366 1367- Allow providing custom profiles 1368 1369### Changed 1370 1371- Allow binding to an IPv6 address by [Jason Juang] 1372 1373- By default, connect to host-agnostic localhost by [Jason Juang] 1374 1375- Make `GeckoContextParameters` public 1376 1377- Update dependencies 1378 1379### Fixed 1380 1381- Squash rustc 1.6 warnings by using `std::thread::sleep(dur: Duration)` 1382 1383 13840.6.2 (2016-01-20) 1385------------------ 1386 1387### Added 1388 1389- Add LICENSE file from [Joshua Burning] 1390 1391- Schedule builds in CI on pushes and pull requests 1392 1393### Changed 1394 1395- Enable CPOWs in Marionette 1396 1397 13980.6.0 (2016-01-12) 1399------------------ 1400 1401### Added 1402 1403- Add Get Page Source endpoint 1404 1405### Changed 1406 1407- Handle arrays being sent from Marionette 1408 1409- Correct build steps in [README] 1410 1411- Update what properties are read from errors sent by Marionette 1412 1413- Update dependencies 1414 1415 14160.5.0 (2015-12-10) 1417------------------ 1418 1419### Changed 1420 1421- Update argparse dependency to use Cargo 1422 1423- Update to the latest version of the Marionette wire protocol 1424 1425- Update to latest webdriver-rust library 1426 1427- Update dependencies 1428 1429 14300.4.2 (2015-10-02) 1431------------------ 1432 1433### Changed 1434 1435- Skip compiling optional items in hyper 1436 1437 14380.4.1 (2015-10-02) 1439------------------ 1440 1441### Changed 1442 1443- Update webdriver-rust library 1444 1445- Update dependencies 1446 1447 14480.4.0 (2015-09-28) 1449------------------ 1450 1451### Added 1452 1453- Add command extensions for switching between content- and chrome 1454 contexts 1455 1456- Add more documentation from [Vlad Filippov] 1457 1458### Changed 1459 1460- Update Cargo.lock with new dependencies for building 1461 1462- Update for protocol updates that flatten commands 1463 1464- Update to new protocol error handling 1465 1466- Update for Marionette protocol version 3 changes 1467 1468- Strip any leading and trailing `{}` from the `sessionId` Marionette 1469 returns 1470 1471- Update dependencies 1472 1473### Fixed 1474 1475- Fix `GetCSSValue` message to send correct key `propertyName` 1476 1477- Fix example in documentation from @vladikoff 1478 1479 14800.3.0 (2015-08-17) 1481------------------ 1482 1483### Added 1484 1485- Add support for finding elements in subtrees 1486 1487 14880.2.0 (2015-05-20) 1489------------------ 1490 1491### Added 1492 1493- Extra debug messages 1494 1495- Add ability to set WebDriver port 1496 1497- Add support for getting the active element 1498 1499- Add support for `GetCookies` and `DeleteCookie`/`DeleteCookies` 1500 1501- Add preferences that switch off certain features not required for 1502 WebDriver tests 1503 1504### Changed 1505 1506- Make failing to communicate with Firefox a fatal error that closes 1507 the session 1508 1509- Shut down session only when losing connection 1510 1511- Better handling of missing command line flags 1512 1513- Poll for connection every 100ms rather than every 100s 1514 1515- Switch to string-based error codes 1516 1517- Switch webdriver-rust library dependency to be pulled from git 1518 1519- Update dependencies 1520 1521### Fixed 1522 1523- Handle null id for switching to frame more correctly 1524 1525 15260.1.0 (2015-04-09) 1527------------------ 1528 1529### Added 1530 1531- Add proxy for converting WebDriver HTTP protocol to Marionette protocol 1532 1533- Add endpoints for modal dialogue support 1534 1535- Allow connecting to a running Firefox instance 1536 1537- Add explicit Cargo.lock file 1538 1539- Start Firefox when we get a [NewSession] command 1540 1541- Add flag parsing and address parsing 1542 1543- Add basic error handling 1544 1545### Changed 1546 1547- Update for Rust beta 1548 1549- Switch to new IO libraries 1550 1551- Pin webdriver-rust commit so we can upgrade rustc versions independently 1552 1553- Set preferences when starting Firefox 1554 1555- Improve some error messages 1556 1557- Re-enable environment variable based logging 1558 1559### Fixed 1560 1561- Fix Get Element Rect command to return floats instead of integers 1562 1563- Fix passing of web elements to Switch To Frame command 1564 1565- Fix serialisation of script commands 1566 1567- Fix assorted bugs found by the Selenium test suite 1568 1569- Fix conversion of Find Element/Find Elements responses from Marionette 1570 to WebDriver 1571 1572- Fixed build by updating Cargo.lock with new dependencies for building 1573 1574- Squash compile warnings 1575 1576 1577 1578[README]: https://github.com/mozilla/geckodriver/blob/master/README.md 1579[Browser Toolbox]: https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox 1580[WebDriver conformance]: https://wpt.fyi/results/webdriver/tests?label=experimental 1581[`webSocketUrl`]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/webSocketUrl 1582[`moz:firefoxOptions`]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions 1583[`moz:debuggerAddress`]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Capabilities.html#moz-debuggeraddress 1584[Microsoft Visual Studio redistributable runtime]: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads 1585[GeckoView]: https://wiki.mozilla.org/Mobile/GeckoView 1586[Fission]: https://wiki.mozilla.org/Project_Fission 1587[Capabilities]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Capabilities.html 1588[Flags]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html 1589[enable remote debugging on the Android device]: https://developers.google.com/web/tools/chrome-devtools/remote-debugging 1590[macOS notarization]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Notarization.html 1591 1592[`CloseWindowResponse`]: https://docs.rs/webdriver/newest/webdriver/response/struct.CloseWindowResponse.html 1593[`CookieResponse`]: https://docs.rs/webdriver/newest/webdriver/response/struct.CookieResponse.html 1594[`DeleteSession`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.DeleteSession 1595[`ElementClickIntercepted`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.ElementClickIntercepted 1596[`ElementNotInteractable`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.ElementNotInteractable 1597[`FullscreenWindow`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.FullscreenWindow 1598[`GetNamedCookie`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.GetNamedCookie 1599[`GetWindowRect`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.GetWindowRect 1600[`InvalidCoordinates`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.InvalidCoordinates 1601[`MaximizeWindow`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.MaximizeWindow 1602[`MinimizeWindow`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.MinimizeWindow 1603[`NewSession`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.NewSession 1604[`NoSuchCookie`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.NoSuchCookie 1605[`RectResponse`]: https://docs.rs/webdriver/0.27.0/webdriver/response/struct.RectResponse.html 1606[`SendKeysParameters`]: https://docs.rs/webdriver/newest/webdriver/command/struct.SendKeysParameters.html 1607[`SessionNotCreated`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.SessionNotCreated 1608[`SetTimeouts`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.SetTimeouts 1609[`SetWindowRect`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.SetWindowRect 1610[`StaleElementReference`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.StaleElementReference 1611[`UnableToCaptureScreen`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnableToCaptureScreen 1612[`UnknownCommand`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnknownCommand 1613[`UnknownError`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnknownError 1614[`WindowRectParameters`]: https://docs.rs/webdriver/newest/webdriver/command/struct.WindowRectParameters.html 1615 1616[Add Cookie]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Commands/AddCookie 1617[invalid argument]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/InvalidArgument 1618[invalid session id]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/InvalidSessionID 1619[script timeout]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/ScriptTimeout 1620[timeout]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/Timeout 1621[timeout object]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Timeouts 1622[`platformName` capability]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities#platformName 1623 1624[hyper]: https://hyper.rs/ 1625[mozrunner crate]: https://crates.io/crates/mozrunner 1626[serde]: https://serde.rs/ 1627[webdriver crate]: https://crates.io/crates/webdriver 1628 1629[Actions]: https://w3c.github.io/webdriver/webdriver-spec.html#actions 1630[Delete Session]: https://w3c.github.io/webdriver/webdriver-spec.html#delete-session 1631[Element Click]: https://w3c.github.io/webdriver/webdriver-spec.html#element-click 1632[Get Timeouts]: https://w3c.github.io/webdriver/webdriver-spec.html#get-timeouts 1633[Get Window Rect]: https://w3c.github.io/webdriver/webdriver-spec.html#get-window-rect 1634[insecure certificate]: https://w3c.github.io/webdriver/webdriver-spec.html#dfn-insecure-certificate 1635[Minimize Window]: https://w3c.github.io/webdriver/webdriver-spec.html#minimize-window 1636[New Session]: https://w3c.github.io/webdriver/webdriver-spec.html#new-session 1637[New Window]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Commands/New_Window 1638[Print]: https://w3c.github.io/webdriver/webdriver-spec.html#print 1639[Send Alert Text]: https://w3c.github.io/webdriver/webdriver-spec.html#send-alert-text 1640[Set Timeouts]: https://w3c.github.io/webdriver/webdriver-spec.html#set-timeouts 1641[Set Window Rect]: https://w3c.github.io/webdriver/webdriver-spec.html#set-window-rect 1642[Status]: https://w3c.github.io/webdriver/webdriver-spec.html#status 1643[Take Element Screenshot]: https://w3c.github.io/webdriver/webdriver-spec.html#take-element-screenshot 1644[WebDriver errors]: https://w3c.github.io/webdriver/webdriver-spec.html#handling-errors 1645 1646[Bastien Orivel]: https://github.com/Eijebong 1647[Jason Juang]: https://github.com/juangj 1648[Jeremy Lempereur]: https://github.com/o0Ignition0o 1649[Joshua Bruning]: https://github.com/joshbruning 1650[Kalpesh Krishna]: https://github.com/martiansideofthemoon 1651[Kriti Singh]: https://github.com/kritisingh1 1652[Mike Pennisi]: https://github.com/jugglinmike 1653[Nupur Baghel]: https://github.com/nupurbaghel 1654[Peter Major]: https://github.com/aldaris 1655[Shivam Singhal]: https://github.com/championshuttler 1656[Sven Jost]: https://github/mythsunwind 1657[Vlad Filippov]: https://github.com/vladikoff 1658