我尝试制作一个 CefSharp.OffScreen 应用程序来模拟登录。但是当网站有打开登录屏幕的弹出屏幕时,我无法点击那个登录按钮。
例如,对于下面的 html 代码,它是一个登录按钮,可以打开一个弹出屏幕以输入电子邮件和密码。
<spark-button size="medium" full variant="secondary" data-linkname="header-sign-in" data-component="sign-in-start" data-click-intent-id="menu-header-sign-in-link-click" data-activity-rule-type="page-over-page">
<button part="base" class="button" type="button" aria-disabled="false" tabindex="0">
<span part="prefix" class="button__prefix">
<slot name="prefix"></slot>
</span>
<span part="label" class="button__label">
<slot></slot>
</span>
<span part="suffix" class="button__suffix">
<slot name="suffix"></slot>
</span>
</button>
"Sign in"
</spark-button>
我可以用
document.getElementsByClassName('nav-user-menu-button')[0].click();
javascript代码模拟点击其他按钮
但是,我不能为那个登录按钮做。
我尝试
document.getElementsByClassName("spark-button[data-link-name='header-sign-in']")[0].click();
但它给出了错误,因为它不包括点击功能。
如何解决错误?
您尝试单击的按钮可能包含在影子 DOM 中,影子 DOM 是包含在元素中的独特 DOM 树,这可能是您遇到问题的原因。在这种情况下,您将无法使用标准的 DOM 遍历技术直接访问按钮。
尝试:
const signInButton = document.querySelector('spark-button[data-linkname="header-sign-in"]').shadowRoot.querySelector('.button');
signInButton.click();