首页 > 解决方案 > 打开 html 的影子根目录时出现错误

问题描述

我想在 shadow-root(open) 中获取一个元素,但以下代码不起作用。不幸的是,由于机密原因,我无法在此处显示 html。它与链接中的这种情况非常相似:https ://www.tutorialguruji.com/python/accessing-shadowroot-via-selenium-in-firefox-returns-javascriptexception-cyclic-object-value/

火狐,硒,蟒蛇

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:\Users\myname\.conda\envs\session\lib\site-packages\selenium\webdriver\remote\webelement.py", line 305, in find_element_by_tag_name
    return self.find_element(by=By.TAG_NAME, value=name)
  File "C:\Users\myname\.conda\envs\session\lib\site-packages\selenium\webdriver\remote\webelement.py", line 659, in find_element
    {"using": by, "value": value})['value']
  File "C:\Users\myname\.conda\envs\session\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "C:\Users\myname\.conda\envs\session\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\myname\.conda\envs\session\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:  [id="username"]

标签: pythonseleniumweb-scrapingfirefox

解决方案


推荐阅读