木偶-有没有办法在无头模式下处理新窗口?

时间:2020-02-20 22:05:24

标签: puppeteer headless

我正在使用需要这些登录类型的应用程序,在该应用程序中会弹出一个新窗口(无选项卡),并要求您以Twitter或Facebook过去(或过去曾经做过)的方式登录。显示要在其中放置电子邮件和密码的位置,单击“登录”,然后该窗口将关闭,主窗口将收到身份验证并继续进行操作。

我可以在“抬头”模式下执行此操作,当我单击身份验证按钮时,会弹出窗口,并且可以通过

const newWindow = (await browser.pages())[1]

然后我会像往常一样导航,在这种情况下,我只需要单击一个按钮,因为我已经登录了要用于身份验证的页面

await newWindow.waitFor("//SomeXpath")

const buttonToClick= (await newWindow.$x("//SomeXpath"))[0]

await buttonToClick.click()

同样,在抬头模式下,它可以正常工作。但在无头模式下,此第二页无法打开。 如果我尝试:

console.log(await browser.pages())

我只看到打开木偶的主页

我见过人们在谈论“目标”类,但似乎是针对新选项卡的,发现的示例对我不起作用(或者我可能无法理解和正确使用)他们)

恐怕我想做的事情是不可能的,我正在追赶幽灵。

谢谢

编辑: 我必须点击带有按钮的窗口的快照

Snapshot of the new window

我也尝试过这种方法,但是它也不起作用:

const newPagePromise = new Promise(x => browser.once('targetcreated', target => x(target.page())));

const popup = await newPagePromise;

其中popUp将是新的“页面”。但是,如果我执行console.log(popup),它将返回“ null”

0 个答案:

没有答案