首页 > 解决方案 > puppeteer 中的条件语句取决于 html 元素的可见性

问题描述

因此,我正在尝试使用 puppeteer 创建一个脚本,该脚本将自动在网站上创建一个帐户。一个问题导致我的代码有 50% 的时间不成功。在网站上单击“注册”后,它会显示一个包含该过程第一步的 div。它始终与电子邮件地址的输入字段相同。当我单击“下一步”并移至该过程的后续部分时,就会出现问题。该网站似乎通过随机选择以下两个选项之一来呈现下一步:或者另一个 div 出现在它要求您选择爱好的地方,或者一个 div 要求您创建用户名。因为我的代码不检查哪个 div 可见,所以它会在输入电子邮件地址并单击下一步后立即尝试输入用户名。所以我的代码只有 50% 的时间有效。我对 JavaScript 或 Puppeteer 的了解不足以创建一个条件语句,该语句将检查可见的 div 并采取相应的行动。到目前为止,我尝试了这个只是为了看看 waitForSelector 会做什么

var usernameVisible = await reddit.page.waitForSelector('div[class="desktop-onboarding-step desktop-onboarding-step_username c-username-picker-shown"]', {visible:true, timeout: 1000});
console.log(usernameaVisible);

如果程序在一秒钟后没有检测到元素,则程序退出,或者返回一个我不知道如何解释的巨大数组。我想如果 if 语句返回 true 或 false 的布尔值,它会起作用,但我不知道我该怎么做。

标签: javascriptnode.jspuppeteer

解决方案


推荐阅读