如何在 CefSharp.OffScreen 中使用 JavaScript 为按钮模拟 Click()

问题描述 投票:0回答:1

我尝试制作一个 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();
但它给出了错误,因为它不包括点击功能。

如何解决错误?

javascript html c#-4.0 cefsharp chromium-embedded
1个回答
0
投票

您尝试单击的按钮可能包含在影子 DOM 中,影子 DOM 是包含在元素中的独特 DOM 树,这可能是您遇到问题的原因。在这种情况下,您将无法使用标准的 DOM 遍历技术直接访问按钮。

尝试:

const signInButton = document.querySelector('spark-button[data-linkname="header-sign-in"]').shadowRoot.querySelector('.button');

signInButton.click();

© www.soinside.com 2019 - 2024. All rights reserved.