【问题标题】:Shadow DOM with Python Selenium Geckodriver使用 Python Selenium Geckodriver 的 Shadow DOM
【发布时间】:2020-03-02 10:18:48
【问题描述】:

我正在尝试使用此代码访问以下网站 https://www.wego.ae/en/flights/searches/cSFO-cLHR-2020-03-09:cLHR-cSFO-2020-03-22/economy/1a:0c:0i?sort=price&order=asc 上的影子根元素,该元素应该可以在 Chrome 驱动程序上运行,但在 Geckodriver 上会出现循环对象异常。

任何人都能够让它在 firefox geckodriver 上运行并可以分享他们的代码吗?

def expandShadowElement(self,element):
    shadowRoot = self.driver.execute_script('return arguments[0].shadowRoot', element)
    return shadowRoot

root1 = self.driver.find_element_by_tag_name('makalu-app')
shadowRoot1 = self.expandShadowElement(root1)

【问题讨论】:

  • 你想在其中访问什么?
  • 现在只是尝试访问该根目录,但它给出了一个 cyclyc 对象错误

标签: selenium firefox web-scraping geckodriver shadow-dom


【解决方案1】:

这并不是真正的解决方案,而是一种解决方法。据我所知,Gekodriver 似乎不支持影子 DOM,但可以访问一个元素。 shadowRoot 不返回 web 元素,因此您需要深入一点。

shadowRoot = self.driver.execute_script('return arguments[0].shadowRoot.firstChild', element)

它并不完美,但您可以正常使用该元素。

【讨论】:

    猜你喜欢
    • 2014-07-18
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2018-06-25
    • 2021-07-17
    • 1970-01-01
    相关资源
    最近更新 更多