【问题标题】:Selenium find_element_by_css_selector not finding elementSelenium find_element_by_css_selector 找不到元素
【发布时间】:2022-01-09 02:53:35
【问题描述】:

我正在开展一个个人项目,以使用 Python 通过 Selenium 自动加入 Twitch 频道。这是我第一次使用 Selenium,遇到了一个我似乎无法解决的问题。

加入标记为包含成人内容的频道时,需要用户单击按钮才能开始观看流媒体。在需要单击按钮之前,我的程序运行良好。

按钮的 HTML 显示为:

<button class="ScCoreButton-sc-1qn4ixc-0 ScCoreButtonPrimary-sc-1qn4ixc-1 jnsGXs ksFrFH" data-a-target="player-overlay-mature-accept"><div class="ScCoreButtonLabel-sc-lh1yxp-0 evtFDZ"><div data-a-target="tw-core-button-label-text" class="Layout-sc-nxg1ff-0 eZactg">Start Watching</div></div></button>

由于类名似乎是动态生成的,因此我计划使用“data-a-target”作为选择器。查看 Selenium 的文档,似乎 find_element_by_css_selector 函数是我需要使用的。我在 Chrome 开发者工具中玩了一下,准备使用:document.querySelector('button[data-a-target="player-overlay-mature-accept"]') 选择按钮,所以我确信它可以与 Selenium 一起使用。

我使用以下代码在 Selenium 代码中进行了选择:

mature = driver.find_element_by_css_selector('button[data-a-target="player-overlay-mature-accept"]')

不幸的是,Selenium 似乎无法找到它并返回错误消息:

Message: no such element: Unable to locate element: {"method":"css selector","selector":"button[data-a-target="player-overlay-mature-accept"]"}
  (Session info: chrome=97.0.4692.71)

我做错了什么?我花了很多时间尝试不同的东西,但似乎没有任何效果。

【问题讨论】:

  • 您的代码似乎正确。也许按钮在iframe 标签内?你能分享链接或html源页面吗?

标签: python selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

也许是这样的:

mature = driver.find_element_by_xpath("//button[@data-a-target='player-overlay-mature-accept']")

mature = driver.find_element_by_xpath("//button[contains(@data-a-target, 'mature')]")

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 2021-03-14
    • 1970-01-01
    • 2021-12-17
    • 2018-11-07
    相关资源
    最近更新 更多