Releases: mherrmann/helium
Releases · mherrmann/helium
Add support for input type=date and ...=time
Fix a small bug in find_all(...)
It was introduced in v5.0.5.
Avoid some FramesChangedWhileIterating errors
v5.0.5 Bump version to 5.0.5
Fix NoSuchElementException print(...)ing elements outside the current frame
Please see the newly added test for details.
Fix error "FramesChangedWhileIterating" in wait_until
It sometimes happened. Now, wait_until(...)
handles this error gracefully by just waiting a little more.
Fix a TypeError
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
v5.0.1 Bump version to 5.0.1
Switch to Selenium Manager for webdriver management
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
Thank you @tbp105 and @petrisorionel for the amazing contribution!
Fix: Helium sometimes "found" too many elements
See the new automated test test_find_all_nested_search_areas
for an example of how it was broken.