CasperJS/PhantomJS .then 在 do/while 循环中不起作用

2023-12-01

像这样的事情对我来说似乎很合乎逻辑,但导致幻像 wtfcrash (这就是它在日志中的名称,但没有提供有用的信息)...

do {
    casper.then(function() {
        var targetFound = false;
        links = this.evaluate(getLinks);

        var searchResultsAr = [];
        for (var link in links) {
            searchResultsAr.push(links[link].replace('/url?q=', '').split('&sa=U')[0]);
        }

        for (var result in searchResultsAr) {
            if (searchResultsAr[result] == target) {
                targetFound = true;
                casper.echo(targetFound);
                break;
            }
        }
        if(targetFound)
        {
            break;
        }
    });
}while(!targetFound);

有不同的可能性,如果你只想静态重复一些事情,你可以使用 casper.repeat() ->如何为 casper.repeat 设置变量值

如果您想在内部使用多个 then 和一个断点,据我所知,您仍然必须使用递归函数。这是一个例子:

  ...
  casper.then(function() {
    loopValidConf.call(this, 0, 15);
  });
  casper.then(function() {
    casper.test.assert(exists, 'true after 15 tries!')
  });

  function loopValidConf(index, numTimes) {
    if (exists === true || index >= numTimes) {
      return;
    }
    casper.then(function() {
      casper.reload(function() {
        casper.echo("reset values");
      });
      casper.then(function() {
        // set some values here
      });
      casper.then(function() {
        casper.waitForSelector(".selector")
      });
      casper.then(function() {
        if (casper.exists('.targetSelector')) {
          exists = true;
          casper.echo('targetSelector exists!');
        } else {
          casper.echo('targetSelector doesnt exists, try it once more!');
        }
      });
    });
    casper.then(function() {
      loopValidConf.call(this, index + 1, numTimes);
    });
  }
  ...

这仍然不是最佳方案(可能会导致内存问题),但它可以工作。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CasperJS/PhantomJS .then 在 do/while 循环中不起作用 的相关文章

随机推荐

  • 如何在用户关闭应用程序 JFrame 之后、程序退出之前直接保存一些对象?

    再会 我正在使用扩展 JFrame 的 NetBeans IDE 开发一个小型 Java 应用程序 我实现了几种关闭应用程序的方法 例如按Ctrl Q并按 JFrame 的 X 但在实际关闭之前 我希望程序为我执行一些额外的代码 以保存应用
  • ANTLR - 输入错误不匹配

    我有一个语法 如下所示 由特定语言的注释和控制语句组成 Grammar grammar DD ddlist ddstmt jclcomment ddstmt dd1 dd2 dd3 dd4 dd1 JCLBEGIN ddname DDWOR
  • 如何将半圆蒙版应用于 ImageView

    我有一个图像 一个半圆形框架图像 我需要将该图像放入该框架内 但我需要对图像应用蒙版 以便它仅显示在框架内 例如 这是我的图像 而我想要的结果应该是这样的 红框也是内部透明的图像视图 我怎样才能在Android中实现这一点 有一个很棒的教程
  • YouTube 可以直接上传到所有用户的通用帐户吗?

    是否可以配置 YouTube Direct 以便将视频上传到一个中央帐户而不是单个用户的帐户 我们已经有了自己的身份验证流程 不希望客户登录我们的系统 然后登录 Google 上传视频 我们可以拥有自己的视频捕获系统 将视频录制到我们的服务
  • 将结果存入变量

    我有以下示例代码 我可以通过打印功能在控制台中看到正确的结果 Define a model for linear regression const model tf sequential model add tf layers dense
  • 谷歌日历 API 令牌将在 7 天后过期

    I used 本指南创建 Google 日历OAuth2客户端 ID 和客户端密钥 然后 我使用 gcalcli 命令创建 API 访问令牌 gcalcli noauth local webserver client id clientid
  • Firebase:限制同一电话号码或同一设备的短信数量

    我们正在尝试在我们的 Android 应用程序中实现 firebase 电话身份验证 如此处所述link 它在我们的应用程序中运行良好 服务器端验证也按预期工作 现在我们想为同一电话号码或同一设备添加每日短信数量限制 以防止滥用 链接引用
  • 使用 VADump 跟踪内存使用情况 - OpenProcess 失败 c0000034

    读完一篇最新一期 MSDN 杂志中的文章 我想尝试使用 VADump 来分解我编写的一些应用程序的内存使用情况 我的电脑上唯一的可执行文件副本位于 c Program Files Microsoft Visual Studio 8 Comm
  • 使用 jq 处理巨大的 GEOJson 文件

    给定一个 GEOJson 文件如下 type FeatureCollection features type Feature properties FEATCODE 15014 geometry type Polygon coordinat
  • Java 计算百分比的算术

    我的 java 应用程序有一个小问题 我必须计算他们完成后的分数 我使用这个方法 public Float ScoreProcent int questions int correct Float x new Float questions
  • Phantomjs 与 Facebook 的 SSL 握手失败 [重复]

    这个问题在这里已经有答案了 我正在尝试使用 phantomjs 为 Facebook 构建一个网络抓取工具 由于 SSL 握手失败 连接失败 我在 Twitter 上得到了相同的结果 但谷歌工作正常 有谁知道这个问题的解决方案 我正在运行
  • Jinja2 中的 zip(list1, list2) ?

    我正在 Jinja2 中进行代码生成 并且经常想一起迭代两个列表 即变量名称和类型 是否有一种简单的方法可以做到这一点 或者我是否需要传递一个预压缩列表 我在中找不到这样的功能docs或谷歌搜索 修改jinja2 Environment全局
  • Visual Studio 2012 中的 c++11 std::mutex 编译器错误

    这是一个关于 C 11 标准中死锁的探索 在 C Concurrency in Action 的 sec3 2 4 中 有一个示例 防止多线程死锁 对于没有这本书的人来说 另外 还有一个几乎类似的例子可以参考 http en cpprefe
  • 在 jupyter 笔记本中保留 pandas 数据框显示的额外空白

    在 jupyter Notebook 中 数据框中多余的空格被删除 但有时这不是首选 例如 df pd DataFrame A a b c B 1 2 df 我得到的结果 A B 0 a b 1 1 c 2 但我想要 A B 0 a b 1
  • 显然缺少 getline() 的重载,在 GCC 4.7.2 和 Clang 3.2 中将 RRef 传输到流

    我在尝试使用时遇到了意外的编译错误getline 使用临时流对象 include
  • mysqli 中的输出 Inserted.row

    我有以下sql表 ID 电子邮件 fbid 当我执行查询时 INSERT INTO users email fbid VALUES randomvalue otherrandomvalue 我想获取插入行的 id 为此 我尝试像这样编辑查询
  • NodeJS:智能 JSON 转换为 Excel 文件

    我正在使用 NodeJS 我想将 JSON 格式的对象导出到 Excel 文件 我很清楚有 至少 三个 npm 包用于此目的 但到目前为止 这些包都没有给我我梦想的输出 这是我的 javascript 对象 var myObject has
  • System.Text.Json.JsonSerializer.Deserialize() 的 .net 5.0 签名更改

    我正在尝试从 NET Core 3 1 到 NET 5 0 并在使用时收到一堆可空性警告Deserialize
  • java中从HTML中删除css信息

    是否有任何库或预先编写的代码可以从 HTML 代码中删除 css 属性 要求是 Java 代码必须解析输入的 html 文档 并删除 css 属性并生成输出 html 文档 例如 如果输入 html 文档具有此元素 p class abc
  • CasperJS/PhantomJS .then 在 do/while 循环中不起作用

    像这样的事情对我来说似乎很合乎逻辑 但导致幻像 wtfcrash 这就是它在日志中的名称 但没有提供有用的信息 do casper then function var targetFound false links this evaluat