With the 1.8.3 release, the positional filtering is lighting fast.
Positional filtering is one of the great strengths of Germanium. It’s great because you’re not only able to find elements by using a
locate_element_by_* selenium function, but in case multiple elements matches, you can filter out the ones that are visually in the wrong positions of the page.
For example to type into an
<input> that is below the text
'User name', someone can:
Even if 5 inputs would match across the page, and 2 inputs are under the text
'User name', the closest one under the given text will be returned by the selector.
When using positional filtering (for example to find elements that are
right_of a specific element), the finding of such elements was visibly slower then regular element finding.
Thus the release of
1.8.3 focused on one thing only, and namely performance. The filtering of the elements was completely rewritten and boasts incredible speeds, with the regression tests for Germanium itself, going from 3:50 minutes to 2:26 (!!) by only refactoring the positional filtering.
This also means that for the
1.9.0 release we can focus now on changing the
contains filtering as well, because we can get now a faster filtering without being forced to stick to only XPath selectors.