javascript - 使用 Puppeteer 点击“onclick”-login-button
问题描述
我在使用 Puppeteer 为使用“onclick”脚本弹出登录窗口的网站自动登录时遇到了困难。登录链接如下所示:
<li>
<a href="#" onclick='openJqueryDialog("D_Login"); return false;' style="padding-right:0;">Login</a>
<span class="blu">oder</span>
<a href="/de/registrierung" onclick="addGTMEvent('Homepage', 'Clicks - Register')">Registrieren</a>
</li>
不幸的是,该页面没有提供登录提示,可以直接通过其 ID 来处理登录字段,如许多 puppeteer-examples 中所示。只能使用此弹出窗口登录。我尝试了许多不同的方法来打开这个登录提示,例如:
(await page.$$eval(selector, a => a.filter(a => a.textContent === 'Login')))[0].click();
或者
let selector = 'a';
page.$$eval(selector, anchors => {
anchors.map(anchor => {
if(anchor.textContent == 'Login') {
anchor.click();
return
}
})
});
在这些操作之后,我希望在使用之后立即在屏幕截图中看到这个登录窗口
await page.screenshot({ path: screenshot2 });
我还尝试使用 page.$x() 来使用它的 x 路径。不幸的是,这些都不起作用。我在操作后立即拍摄的屏幕截图返回了与预期点击之前相同的页面结果。我希望看到屏幕截图上弹出登录窗口。可能是屏幕截图功能不显示此窗口,即使它是可见的?
有没有办法在执行 puppeteer 脚本时查看浏览器的运行情况?我做了一些实验
const browser = await puppeteer.launch({ headless:false });
但这没有显示任何浏览器窗口。所以目前我只有截图作为返回值。
不幸的是,我对 JavaScript 不太熟悉......
我怎样才能实现点击此链接?
解决方案
我找到了一个更好的方法:Selenium + python。马上工作。很棒的调试功能。也支持火狐。更简单的语法。少动脑筋。
推荐阅读
- javascript - 如何使用 HTML 中触发的 swift/cordova 代码打开 URL?(通过Javascript?)
- javascript - Javascript - 定时器在 5 秒后禁用
- c# - Identity Server 4 Asp.Net Identity + EF Core 未播种
- reporting-services - SSRS:我可以通过拖放 .rdl 文件快速更新我的报告吗?
- c# - 在 excel 中查找重复的行并使用 power shell 将这些行导出到另一个工作表
- ios - 斯威夫特 - 不能调用选择器..为什么?
- javascript - 如何在 Angular 7 应用程序中集成 Apache Superset Charts?身份验证和标头问题
- git - jenkins does not trigger build when a new tag is pushed on the same commit
- dom - Testcafe Selector 用于识别 DOM 结构特定组件内的元素
- apple-push-notifications - 如何使用 ios 日历内置应用程序和不使用应用程序使用苹果推送通知