NodeJS 如何使用Puppeteer用“阴影根(闭合)”填充输入?

vsnjm48y  于 2023-01-01  发布在  Node.js
关注(0)|答案(1)|浏览(134)

我一直在尝试用Puppeteer填充Shadow-Root中的输入(#inputEmail)
下面是HTML的外观:

<login-form id="form"></login-form>
#shadow-root (closed)
    <span id="reauth-email" class="reauth-email"></span>
    <div class="form-group">
        <label>Email</label>
        <input type="text" id="inputEmail" name="" class="form-control" tabindex="1" placeholder="email@example.com" value="" autocomplete="off" autofocus="true" required="">
        <label id="inputEmailTooltip" class="error" style="display: none">Required Field</label>
    </div>
<login-form id="form"></login-form>

我在" puppet 师"身上试过这样的方法

const input = await $(page, `form::id(#inputEmail)`);

得到错误'form::id(#inputEmail)' is not a valid selector.
我也试过

const emailInput = document.querySelector('#form').shadowRoot.querySelector('#inputEmail')

并得到下面的错误

const emailInput = document.querySelector('#form').shadowRoot.querySelector('#inputEmail')
                       ^

ReferenceError: document is not defined

如何使用Puppeteer或puppeteer-shadow-selector之类的库定位此输入?

z4bn682m

z4bn682m1#

我无法确认,但您应该能够使用内置的pierce选择器:

await page.type('pierce/#inputEmail', 'myemailvalue');

相关问题