Skip to content

Releases: mherrmann/helium

Add support for input type=date and ...=time

23 Aug 09:13
9dac617
Compare
Choose a tag to compare

See 2100561.

This is a minor version upgrade (5.0.... -> 5.1....) because the new implementation may find slightly different text fields.

Fix a small bug in find_all(...)

14 Aug 08:51
eac576f
Compare
Choose a tag to compare

It was introduced in v5.0.5.

Avoid some FramesChangedWhileIterating errors

14 Aug 08:41
654ded1
Compare
Choose a tag to compare
v5.0.5

Bump version to 5.0.5

Fix NoSuchElementException print(...)ing elements outside the current frame

14 Aug 07:49
b90ead0
Compare
Choose a tag to compare

Fix error "FramesChangedWhileIterating" in wait_until

23 Jul 07:33
466b4c0
Compare
Choose a tag to compare

It sometimes happened. Now, wait_until(...) handles this error gracefully by just waiting a little more.

Fix a TypeError

11 Jul 07:38
04006a2
Compare
Choose a tag to compare
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "helium/__init__.py", line 172, in write
    _get_api_impl().write_impl(text, into)
  File "helium/_impl/__init__.py", line 36, in f_decorated
    result = f(self, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "helium/_impl/__init__.py", line 55, in f_decorated
    return f(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^
  File "helium/_impl/__init__.py", line 145, in write_impl
    self._handle_alerts(
  File "helium/_impl/__init__.py", line 170, in _handle_alerts
    return no_alert(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "helium/_impl/__init__.py", line 156, in _write_no_alert
    self._manipulate(into, _write)
  File "helium/_impl/__init__.py", line 280, in _manipulate
    driver.last_manipulated_element = gui_or_web_elt.perform(action)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "helium/_impl/__init__.py", line 622, in perform
    result = self._perform_no_wait(action)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "helium/_impl/__init__.py", line 629, in _perform_no_wait
    for bound_gui_elt_impl in self.find_all():
  File "helium/_impl/__init__.py", line 593, in find_all
    for occurrence in self.find_all_occurrences():
  File "helium/_impl/__init__.py", line 691, in find_all_occurrences
    for occurrence in self._find_all_in_curr_frame():
  File "helium/_impl/__init__.py", line 712, in _find_all_in_curr_frame
    for occurrence in self.find_anywhere_in_curr_frame():
  File "helium/_impl/__init__.py", line 1037, in find_anywhere_in_curr_frame
    for bound_gui_elt_impl in element.find_anywhere_in_curr_frame():
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "helium/_impl/__init__.py", line 913, in find_anywhere_in_curr_frame
    result = list(self._filter_elts_belonging_to_labels(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "helium/_impl/__init__.py", line 950, in _filter_elts_belonging_to_labels
    labels_to_elts = self._ensure_at_most_one_label_per_elt(labels_to_elts)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "helium/_impl/__init__.py", line 993, in _ensure_at_most_one_label_per_elt
    self._retain_closest(elts_to_labels)
  File "helium/_impl/__init__.py", line 998, in _retain_closest
    closest = self._find_closest(pivot, elts)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "helium/_impl/__init__.py", line 1012, in _find_closest
    return sorted(distances)[0][1]
           ^^^^^^^^^^^^^^^^^
TypeError: '<' not supported between instances of 'WebElementWrapper' and 'WebElementWrapper'

Fix a spurious StaleElementReferenceException

11 Jul 04:49
849f99a
Compare
Choose a tag to compare
v5.0.1

Bump version to 5.0.1

Switch to Selenium Manager for webdriver management

08 Dec 06:49
054c254
Compare
Choose a tag to compare

This bumps Selenium from < 4.10 to >= 4.16, which introduces a backwards-incompatible change: start_chrome(...) used to take a capabilities parameter. This is no longer supported by Selenium. Instead, you have to use set_capability(...) as follows:

from helium import start_chrome
from selenium.webdriver.chrome.options import Options

options = Options()
options.set_capability('goog:loggingPrefs', {'performance': 'ALL'})
start_chrome(options=options)

Switch from Selenium 3 to 4

15 Nov 05:49
ea97005
Compare
Choose a tag to compare

Fix: Helium sometimes "found" too many elements

27 Sep 12:59
60d6611
Compare
Choose a tag to compare

See the new automated test test_find_all_nested_search_areas for an example of how it was broken.