我正在进行一个个人项目,使用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)
我是不是做错了什么?我花了很多时间尝试不同的东西,但似乎什么都不起作用。
也许这个:
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')]")