Я получаю ошибку, когда открываю теневой корень html

#python #selenium #web-scraping #firefox

Вопрос:

Я хочу получить элемент в теневом корне(открыть), но следующий код не работает. К сожалению, я не могу показать html здесь по конфиденциальной причине. Это очень похоже на этот случай по ссылке: https://www.tutorialguruji.com/python/accessing-shadowroot-via-selenium-in-firefox-returns-javascriptexception-cyclic-object-value/

Firefox, селен, python

 def expand_shadow_element(element):
    # return a list of elements
    shadowRoot = driver.execute_script('return arguments[0].shadowRoot.children', element)
    return(shadowRoot)

    
#wait for element to load

el = WebDriverWait(driver, timeout=20).until(lambda d:d.find_element_by_tag_name("amplify-authenticator"))
time.sleep(5)

#expand the shadowroot and click the canvas
host = driver.find_element_by_tag_name("amplify-authenticator")
shadowRoot = expand_shadow_element(host)
print(shadowRoot[1])
canvas = shadowRoot[1].find_element_by_id('username')
canvas.click()
 

ошибка, которую я получаю, это

  Traceback (most recent call last):
  File "UHportal_login.py", line 60, in <module>
    canvas = shadowRoot[1].find_element_by_id('username')
  File "C:Usersmyname.condaenvssessionlibsite-packagesseleniumwebdriverremotewebelement.py", line 305, in find_element_by_tag_name
    return self.find_element(by=By.TAG_NAME, value=name)
  File "C:Usersmyname.condaenvssessionlibsite-packagesseleniumwebdriverremotewebelement.py", line 659, in find_element
    {"using": by, "value": value})['value']
  File "C:Usersmyname.condaenvssessionlibsite-packagesseleniumwebdriverremotewebelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "C:Usersmyname.condaenvssessionlibsite-packagesseleniumwebdriverremotewebdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:Usersmyname.condaenvssessionlibsite-packagesseleniumwebdriverremoteerrorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:  [id="username"]