点击[target="_blank"]后会打开一个新标签页。如何获取代码以获取新页面对象,以便我可以访问密码输入字段?使用NodeJS、JavaScript、Puppeteer。
导航工作到下面包含的点为止。
编辑:我使用了page.url()方法来检索当前URL,新创建的选项卡的URL不会记录到控制台中,之前的页面会记录。
我尝试调整脚本并收到以下错误 Cannot read properties of undefined (reading 'page') - 我认为添加时间延迟会解决这个问题,但没有用。
我遇到了这个错误,但是由于下面的代码,我没有得到这个错误:No node found for selector: #Password
我查看了相关问题 我遇到了dheerajbhaskar GitHub问题,并阅读了相关问题。
另一种尝试#1:我试图通过鼠标x,y坐标选择输入,以激活输入字段,但是这返回以下错误:“
另一种尝试#2:
注意:URL是随机生成的,所以我很好奇是否有任何解决方法可以使用当前的URL。我认为新创建的选项卡仍然需要被激活...
导航工作到下面包含的点为止。
编辑:我使用了page.url()方法来检索当前URL,新创建的选项卡的URL不会记录到控制台中,之前的页面会记录。
我尝试调整脚本并收到以下错误 Cannot read properties of undefined (reading 'page') - 我认为添加时间延迟会解决这个问题,但没有用。
我遇到了这个错误,但是由于下面的代码,我没有得到这个错误:No node found for selector: #Password
我查看了相关问题 我遇到了dheerajbhaskar GitHub问题,并阅读了相关问题。
- #386
- #3535
- #978 and more
try {
await sleep(2300)
// This block creates a new tab
// I was previously using a selector and not mouse click API
await Promise.all([
page.mouse.click(xToolsBtn, yToolsBtn, { delay: 2000 }),
])
// NEW TARGET CREATED
// Below is a snippet from an accepted answer but the the type method
// does not work
// Seems like page is still not activated
const [newTarget] = await Promise.all([
// Await new target to be created with the proper opener
new Promise((x) =>
browser.on("targetcreated", (target) => {
if (target.opener() !== page.target()) return
browser.removeListener("targetcreated", arguments.callee)
x()
})
),
// page.click('link')
])
// Trying to input password without success
const newPage = await newTarget.newPage()
await newPage.type("#Password", process.env.PASSWORD, {
delay: randomGenerator,
})
} catch (err) {
console.error(
"LOGIN BUTTON FAIL",
err.message
)
}
另一种尝试#1:我试图通过鼠标x,y坐标选择输入,以激活输入字段,但是这返回以下错误:“
未找到选择器的节点:#Password
”另一种尝试#2:
//* WAIT FOR TARGET
try {
await sleep(2300)
await Promise.all([
page.mouse.click(xToolsBtn, yToolsBtn, { delay: 2000 }),
])
sleep(5000)
await page.evaluate(() => window.open(`${loginUrl3}`))
const newWindowTarget = await browser.waitForTarget(
(target) => target.url() === `${loginUrl3}`
)
console.log("GOT TARGET")
await newWindowTarget.type("#Password", process.env.PASSWORD, {
delay: randomGenerator,
})
} catch (err) {
console.log("WAIT FOR TARGET FAILED")
}
注意:URL是随机生成的,所以我很好奇是否有任何解决方法可以使用当前的URL。我认为新创建的选项卡仍然需要被激活...