### 6.19.0 (2021-03-12) * Create custom Watir HTTP Client * Require minimum of Selenium 3.142.7 * Add support for starting browser with :http_client and :service hashes * Allow inferring desired browser from Capabilities or Options if browser not specified * Deprecate WindowCollection#to_a method * Deprecate starting browser with both Capabilities and Options * Deprecate starting browser with both URL and Service * Deprecate using :desired_capabilities * Deprecate starting browser service keywords in top level Hash * Deprecate using :remote to start a browser; browser name must be specified * Deprecate sending unknown keywords into the top level * Fix bug preventing Safari Options from being recognized * Fix bug preventing options provided without :remote keyword from being properly recognized (#812, #870) * Fix bug preventing :headless from being recognized when :options specified (#692) ### 6.18.0 (2021-02-26) * Implement `WindowCollection` to manage multiple `Window` objects * Add support for locating `Window` by `:element` * Deprecate locating `Window` by `:index` * Deprecate `Select#select_all` in favor of `#select` and an `Array` * Implement `Browser#switch_window` (#849) * Add support for `Numeric` attribute values to `Waitable` * Allow users to specify Selenium 4 in their projects * Update stale element handling behavior to match webdriver spec (#905 #909) * Implement `Waitable` for `ElementCollection` (#853 #857) * Improve performance for nested elements (#843) * Less strict version check for `regexp_parser` gem (thanks Pavel Lobashov) ### 6.17.0 (2020-08-27) * Require Ruby > 2.5 * Implement Logger#selenium= to set selenium level from Watir * Implement FileField#upload * Fix bug with staleness handling in #exist and #present? (#853 & #852) * Fix bug when locating elements by text with RegExp (#866 #871) * Implement modifiers for `Element#right_click` (thanks Lakshya Kapoor #861) * Updated locator code to adhere to spec on what attributes are case sensitive (#507 #856) * Fix locating bug when iframe is nested under another element (thanks Matthew Mazaika #885 #886) * Deprecate Element#scroll_into_view in favor of the new Scroll methods (#884) * Fix threading bugs by allowing each Browser instance its own Timer (#881) * Allow adjacent locators to return Input subtype when applicable (#878) * Removed unnecessary reference to rubyforge (thanks olleolleolle #874) * Removed deprecated Selenium classes (thanks joesho112358 #867) * Add support for :service parameter for initializing Browser ### 6.16.5 (2018-12-25) * Fix bug with nested elements using scopes (#842) ### 6.16.4 (2018-12-24) * Minor adjustments to support locator extensions ### 6.16.3 (2018-12-24) * Minor adjustments to support locator extensions ### 6.16.2 (2018-12-24) * Fix bug merging scope when locating nested elements with css locator (#841) * Fix bug with IFrame#to_subtype * Improve performance for nested frames ### 6.16.1 (2018-12-23) * Improve collection performance with JavaScript (thanks Lucas Tierney) * Update deprecation warnings * Improve performance when using previously located elements ### 6.16.0 (2018-12-16) * Fix bug that did not re-locate Stale elements when taking an action on them (#814) * Implement `Element#cache=` to assign otherwise located Selenium Element to `Element` * Allow `:class` and `:class_name` locators to be used at the same time * Allow `:class` locator with empty `Array` value to find all elements without a `class` attribute * Fix bug that forced nested elements to wait when calling predicate methods (#827) * Locator filtering behavior and Validate class moved into new `Matcher` classes * Selector is built on Element initialization rather than during location * Allow some nested elements to be located with a single XPath call * Merge p0deje's watir-scroll gem functionality directly into Watir * Fix bug with `#obscured?` for non-interactive elements (#818) ### 6.15.1 (2018-12-04) * Locator value type check error message now returns array of allowed class types * Wire calls for `:label` locator happen after Selector is built * Improve error message for `Watir::Option` element when not found (#823) * Wrap `#wd` with `#element_call` to wait for element to exist (#813) * Remove automatic element reset in wait loop (#819) ### 6.15.0 (2018-11-07) * Add `Element#selected_text` * Add `Element#classes` * Add `Element#obscured?` * Deprecate `#wait_until_present` and `#wait_while_present` * Improved Locator classes to reduce wire calls when using multiple/complex locators * Fix bug with IE options * Allow time values in yaml files for cookies (thanks Ryan Baumann) ### 6.14.0 (2018-09-13) * HTML Element attribute support updated to HTML 5.2 * `#wait_until_present` and `#wait_while_present` accept custom message arguments (thanks Jakub Samek) * Added `Element#located?` method * Fix bug preventing collections from waiting for a parent element (#759) * Fix bug preventing collection elements from being cached * Update code style in accordance with Rubocop settings * Add `Element#attribute_list` and `Element#attribute_values` (thanks Lakshya Kapoor) * Fix bug preventing location of elements based on how XPath deals with default namespaces * Ruby 2.2 and below are no longer supported. ### 6.13.0 (2018-09-02) * Allow wait methods to wait for values of any attribute * Allow locating custom elements with adjacent methods * Support how latest IEDrivers are handling stale elements * Restore support for using of previously cached elements in collections * Fix bug preventing clicking option when select list is not displayed * Allow elements with content-editable attribute to use UserEditable module methods ### 6.12.0 (2018-07-24) * Allow elements to be located with attributes that have underscores (thanks John Fitisoff) * Get array of elements from an Element Collection using a Range (#738) * Deprecate using `#present?` or `#visible?` to determine if an element is stale * Allow getting element attribute values with a Symbol * Add new functionality to `#flash` (thanks Gijs Paulides) * Fix bug preventing text_field from waiting until present (#675) * Fix bug allowing `StaleElementReferenceError` during element location * Add support for Wait methods to receive `Proc` as message values * Add support to ignore specific warnings logged by Watir * Deprecate locating elements by ordered parameters * Changed scope for locator namespacing (Thanks Aleksandar) * Deprecate current implementation of `#visible?` * Update logic `#wait_while_present` and `#wait_until_present` * Deprecate `#wait_while_present` and `#wait_until_present` for non-Element classes ### 6.11.0 (2018-05-18) * Improve lazy loading of element collections * Fix regressions (#726, #730) ### 6.11.0.beta2 (2018-05-10) * Additional performance updates * Fix bug with error message of unlocated parent element (#706) ### 6.11.0.beta1 (2018-05-04) * Significant performance updates ### 6.10.3 (2018-01-26) * Add special handling for `date_field` and `date_time_field` input types ### 6.10.2 (2017-12-13) * Fix bug in `#exists?` for elements nested in IFrames ### 6.10.1 (2017-12-12) * Fix bug in IFrame#present? * Improve performance for Element#center (thanks Lucas Tierney) * Skip tag name filter when locating by tag name ### 6.10.0 (2017-11-23) * Add support for locating elements with custom attributes * Add new `:visible_text` locator (thanks Justin Ko) * Deprecate Selenium locators `:link`, `:link_text` and `:partial_link_text` in favor of `:visible_text` * Deprecate finding only visible text for `RegExp` values on `:text` locator (#342) * Improve support for finding elements with `:tag_name` along with `:xpath` or `:css` locators ### 6.9.1 (2017-11-20) * Fix bug preventing the use of `#exectue_script` in `AfterHook` (#684) ### 6.9.0 (2017-11-18) * Fix bug in Element#flash * Fix bug with w3c alert handling (thanks Lakshya Kapoor) * Add support for passing multiple options into #select and #select_all (thanks Justin Ko) * Add support for passing multiple parameters into Element#set! (thanks Justin Ko) * Add support for headless Firefox (thanks Lucas Tierney) * Add support for setting cookie expiration by String (thanks Lucas Tierney) * Add support for new class locators to #element and #elements (thanks Justin Ko) * Provide suggestion to look inside IFrame when element not found (thanks Justin Ko) ### 6.8.4 (2017-09-08) * Fix bug with non-visible buttons not being waited on (#648) ### 6.8.3 (2017-09-07) * Fix bug with non-interactable elements not being waited on (#636) ### 6.8.2 (2017-09-06) * Fix bug to prevent after_hooks from running when an alert is present * Fix bug with actions not correctly timing out (#636) ### 6.8.1 (2017-09-05) * Ignore index locator when value is zero * Fix bug with `Select#select!` doing partial string matches (thanks Justin Ko ) ### 6.8.0 (2017-08-28) * Add AfterHook executions to additional methods that can change DOM * Deprecate `Select#select_value` in favor of `Select#select` * Implement `Element` `#click!`, `#double_click!` & `#set!` with JavaScript * Implement `Select#select!` and `Select#select_all!` with JavaScript * Implement `Element#inner_text` and `Element#text_content` * Implement `RadioSet` * Implement `Input#label` * Fix bug preventing Capabilities from handling :listener ### 6.7.3 (2017-08-20) * Fix bug preventing Capabilities from handling :driver_opts (#629) ### 6.7.2 (2017-08-18) * TableCell#column_header returns String not Cell ### 6.7.1 (2017-08-16) * Fix bug preventing use of Firefox profiles (#625) ### 6.7.0 (2017-08-14) * Implement TableCell#column_header * Add aliases to access Element methods in more ways * Add methods on Element #scroll_into_view #location #size #height #center * Fix bug preventing Safari Technology Preview usage * Implement Browser#original_window * Implement TableCell#sibling_from_header * Fix bug preventing usage of switches with Chrome * Fix bug of not waiting for SelectList when using options * Allow OList, UList, TableRow, Table to be accessed like collections * Implement Element#siblings * Fix bug preventing locating elements by attribute ### 6.6.3 (2017-08-09) * Fix bug preventing usage of remote driver (#614) * HTML Element attribute support updated to HTML 5.1 ### 6.6.2 (2017-08-08) * Fix bug preventing headless operation (#611) ### 6.6.1 (2017-08-07) * Support initializing browser with Selenium Options class (#606) ### 6.6.0 (2017-08-02) * Implement `Select#select_all` for selecting multiple options in select list * Deprecate `Select#select` for selecting multiple options in a list * Implement `ElementCollection#empty?` and `ElementCollection#locate?` * Implement `Watir::Logger` class * Implement `Watir::Capabilities` class * Add support for relocating elements created with `Element#to_subtype` * Add support for locating adjacent elements with any Watir locator * Allow locating buttons by type attribute (thanks Justin Ko ) ### 6.5.0 (2017-07-25) * Add support for locating multiple classes using :class parameter ### 6.4.3 (2017-07-19) * Fix bug with element relocation from ElementCollection ### 6.4.2 (2017-07-14) * No changes ### 6.4.1 (2017-07-13) * Fix bug with stale element errors from ElementCollection (#571) ### 6.4.0 (2017-07-11) * Significant performance updates ### 6.3.0 (2017-06-20) * Allow locating elements by attribute presence/absence (#345) * Element#flash configurable by color, number, and delay (thanks Paul3816547290) * Implement Select#text like Select#value (thanks Arik Jones) * Optimize Select#selected_options, Select#value, and Select#text with javascript (thanks Andrei Botalov) * Support locating elements by #execute_script from inside frame context ### 6.2.1 (2017-03-22) * Allow sending text to FileField without checking element is #visible? * Fix bug waiting for Alerts * Fix bug from resetting stale element (thanks DJCecil2) ### 6.2.0 (2017-02-20) * `Element#wait_while_present` exits when locator no longer matches * Element Collections store specific element types rather than just `HTMLElement` * Implement adjacent element location for parent, siblings and children * Add support for assigning keywords to `Element` for better error messaging * Update actions implementation to work with selenium-webdriver > 3.0.5 ### 6.1.0 (2017-01-04) * Add Ruby 2.4.0 support (thanks Robert MacCracken) * Implement polling interval parameter for wait methods * Implement visible locator for element collections * Implement automatic waiting for selecting options in a select list * Fix bug allowing `StaleElementReferenceError` in `#wait_while_present` calls ### 6.0.3 (2016-12-22) * No notable changes, only includes fixes for WatirSpec ### 6.0.2 (2016-11-15) * Fix bug for `Timer#current_time` calling the wrong `Time` ### 6.0.1 (2016-11-09) * Fix bug for `Browser#wait_until` and `wait_while` to allow ordered arguments ### 6.0.0 (2016-11-08) * Add `#Watir#relaxed_locate` to enable automatic waiting for elements to be ready for a specified action * Remove `when_present` method * Update `wait_until` and `wait_while` to return `self` to allow chaining * Support keywords for wait methods * `Element#text_field` no longer locates textareas - use `Element#textarea` instead. * Use `Process.clock_gettime` when available for waiting (#486) ### 6.0.0.beta5 (2016-09-25) * Elements in collections can now be relocated after going stale * Added visible locator to filter out matching elements that are hidden * Element not found error messages now include selector information from parent elements ### 6.0.0.beta4 (2016-09-12) * Deprecate Watir#prefer_css setting * Deprecate Watir#always_locate setting * Add `Element#stale?` * Add `Element#wait_until_stale` * Allow locating date/time/etc. input types with `#text_field` (#295) ### 6.0.0.beta3 (2016-08-07) * Deprecate `require "watir-webdriver"` in favor of `require "watir"` ### 6.0.0.beta2 (2016-08-06) * Support projects with files using `require "watir-webdriver"` ### 6.0.0.beta1 (2016-08-06) * Project renamed to watir * References to WebDriver removed or replaced by Selenium * Require Selenium > 3.0.0.beta1 * Default browser in Watir is now Chrome * Default implementation for Firefox is with geckodriver * Remove deprecated alerts helpers * Remove deprecated checkers ### 0.9.9 (2016-08-01) * Final release as watir-webdriver ### 0.9.3 (2016-07-31) * Fix warning message for untyped text field (#434) ### 0.9.2 (2016-07-29) * Massive reorganization and refactoring of element locators (#392) * Fix bug with when_present (#432) * Bug fix for elements in collections going stale ### 0.9.1 (2015-10-14) * Fix permissions issue with element_locator file(#381) * Trying to select a disabled option now raises `ObjectDisabledException` (#378) * `Element#enabled?` raises `UnknownObjectException` if element is not present (#379) ### 0.9.0 (2015-10-08) * Improve performance for Select#include? (#375, thanks @Conky5) * Add support for waiting for elements to be enabled (#370, thanks @Rodney-QAGeek) * Remove unnecessary wire calls for navigation (#369) * Improve performance for Select#selected? with large drop-down lists (#367) * Add stale element protection and correct context assurance for Browser#text (#366) * Restore behavior for Wait#until to return result of block (#362, thanks @chrismikehogan) * Fix context switching between frames for element collections (#361) * AfterHooks run after closing an alert (#352) * New AfterHooks API that deprecates Checkers: * Use `Browser#after_hooks#add` instead of `Browser#add_checker` * Use `Browser#after_hooks#delete` instead of `Browser#disable_checker` * Use `Browser#after_hooks#run` instead of `Browser#run_checkers` * Use `Browser#after_hooks#without` instead of `Browser#without_checkers` ### 0.8.0 (2015-06-26) * Ruby 1.8 is no longer supported. Ruby 1.9 still works, but not supported as well (#327) * Ensure `Watir::Element` responds to `data_*` and `aria_*` methods (#333, thanks @daneandersen) * Fixed the handling of child elements becoming stale (#321) * Performance optimization for nested elements (#321) * Support for SVG elements (see `lib/watir-webdriver/elements/svg_elements.rb`) * Updated selenium-webdriver to 2.46.2 ### 0.7.0 (2015-03-02) * Allow finding all elements with prefer_css * Add support for yard-doctest (#287) * Update from HTML spec (#296) * Support tag_name call on Frames and IFrames (#293 & #294) * Increased performance by caching elements by default where possible (#307) * Improved handling of elements that go stale during lookup (#291, thanks @titusfortner) * Fix element location issues when switching between IFrames (#286, thanks @titusfortner) * Fix creation of an IFrameCollection based on selector (#299, thanks @titusfortner) * Fix window handling with closed windows (#290 & 282, thanks @titusfortner) * Prevent running checkers on a closed window (#283, thanks @titusfortner) * Allow taking actions without triggering run checkers (#283, thanks @titusfortner) * Fix bug when ElementCollection#[] returns existing elements for non-existing selector (#309) * Fix bug when Wait would never execute block with 0 timeout (#312) * Fix race condition with IFrameCollection#to_a (#317) ### 0.6.11 (2014-09-23) * Fix namespacing issue (#265, thanks @titusfortner) * Fix handling of elements that go stale during lookup (#271, thanks @titusfortner) ### 0.6.10 (2014-06-10) * Changed the way attributes are generated and documented (see #28 and #215) * Improved error message for read only elements (see #256) ### 0.6.9 (2014-04-13) * `Watir::Wait` timer can be re-implemented now (see #242) * Added `Watir::Cookies#[]` to retrieve cookie by name (see #251, thanks @mattparlane) * Added `Watir::Element#outer_html` (aliased to `#html`) (thanks @aderyabin) * Added `Watir::Element#inner_html` (thanks @aderyabin) ### 0.6.8 (2014-02-20) * `:css` selector can now be used with `:index` (fixes #241) * `:css` selector can now be used on all container methods (fixes #124) ### 0.6.7 (2014-02-04) * Revert wait/timeout bug introduced in 0.6.5 to fix #228. ### 0.6.6 (2014-01-29) * Fix regression where locating `` using (value: /foo/) would fail. ### 0.6.5 (2014-01-28) * Allow :name as locator for any element (#238) * Make default timeout configurable (Watir.default_timeout, thanks to Justin Ko) * Fix collission with Timecop. (#228) * Support locating elements by and retrieving value of `aria-*` attributes. (#233) * Allow to save/load cookies from file (thanks @ar4an) * Locate by label attribute if it's valid for element (#219) * Delegate #present? to Element (#216) * Handle iframes like frames (#204) * Fix HTML5 / input type handling (#217) * Fix locating buttons and textarea by value (#163, #208) * Make sure Browser#url always returns url of top frame (#205). * Deprecate locating texteareas with #text_field. ### 0.6.4 * Add ability to find element by parent