waitForSelector 超时意味着预期的元素没有满足其等待条件。在元素出现之前添加代理,并不能证明代理的 TCP 连接已经超时。

  1. 保留导航证据。 记录最终 URL、主响应状态和相关失败请求,然后才去等待选择器。在 Puppeteer 中,HTTP 错误响应不一定会作为导航异常抛出。
  2. 检查实际送达的文档。 它的标题或经过仔细遮蔽的截图可能显示登录挑战、拒绝访问页面或另一个地区页面。目标页面也可能有失败的应用请求;还要检查选择器和框架。
  3. 在源头处理任何挑战。 遇到代理挑战时,在导航之前配置受支持的代理认证。目标站点一侧的挑战属于应用自身的授权流程,并有它自己的凭据。

这常常能揭示出在元素等待成为代码报告的第一个异常之前就已存在的有用证据。把网站密码交给代理并不能修正那份更早的文档。

在确定失败的操作之后再选择超时时间。导航、网络建立和元素等待各有不同的限值。真正缓慢的界面或许值得更长的选择器等待;而错误页面仍然是错误的文档。

比较时保持浏览器会话和路由不变。在一次尝试中同时改动代理、选择器和全部浏览器状态,会掩盖究竟是哪个条件起了作用。

相关文章