我正试图点击#shadow-root (closed)
内部的按钮,在iframe 内部
<iframe title="recaptcha challenge expires in two minutes"
<div class="button-holder help-button-holder">
#shadow-root (closed)
<link rel="stylesheet" href="chrome-extension://mpbjkejclgfgadiemmefgebjfooflfhl/src/solve/solver-button.css">
<button tabindex="0" title="Solve the challenge" id="solver-button"></button>
</div>
</iframe>
这是我用来切换到iframe 的
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@title='recaptcha challenge expires in two minutes']")))
如何单击//button[@id="solver-button"]
以下是的照片
iframe链接
按钮链接
切换到<iframe>
的代码行非常完美。然而,所需的元素位于#shadow root(closed(中,并且使用Selenium,您将无法与#shadowroot(closeed(中的元素交互,因为根据shadow DOM遍历支持中的讨论:
- @43081j提到,对于封闭的影子根,应该接受你不能访问它(抛出异常(。所以,我们不需要关心封闭的根,因为我们无论如何都不应该访问它们
- @AutomatedEster在他的规范提案中提出了在Shadow DOM上下文和文档上下文之间移动的能力