This would it with the method added to self._strategies
from SeleniumLibrary.base import LibraryComponent
from SeleniumLibrary.locators import ElementFinder
class ShadowDomFinder(ElementFinder):
def __init__(self, ctx):
ElementFinder.__init__(self, ctx)
self._strategies['dim'] = self._find_by_dim
def _find_by_dim(self, criteria, tag, constraints, parent):
self._disallow_webelement_parent(parent)
result = self.driver.execute_script("return %s;" % criteria)
if result is None:
return []
if not isinstance(result, list):
result = [result]
return self._filter_elements(result, tag, constraints)
class ShadowDom(LibraryComponent):
def __init__(self, ctx):
LibraryComponent.__init__(self, ctx)
self.element_finder = ShadowDomFinder(ctx)