- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试调试 casperjs 脚本 using the remote debugger我发现 casper 实例方法在脚本执行完成之前不起作用。这似乎是 then() 和 run() 在 casper 中如何工作的一些回调怪癖,但我不确定如果您无法暂停程序执行并运行代码,那么调试器的 casper 控制台端如何有用如果它仍在运行( this answer 听起来确实可以)。
例如,hello_wolfram.js启动 casper 实例,转到 Wolfram alpha,回显页面标题,搜索分形,然后再次回显页面标题。这些页面标题调用在运行脚本中工作正常,但如果我尝试在 casper 上下文控制台中运行该命令,它将返回 null。其他 casper 方法也不起作用。虽然 casper 变量已定义,但我确实可以访问一个漂亮的、信息丰富的 Casper 对象。
var casper = require('casper').create();
casper.start('http://www.wolframalpha.com');
// echo page title for sanity check
casper.then(function(){
debugger; // 1
this.echo('Hello, Wolfram! The Page title is ' + this.getTitle());
});
// enter search term and submit form
casper.then(function() {
this.fill('form.index', {'i': 'fractals'}, true)
});
// echo page title on search results page
casper.then(function(){
debugger; // 2
this.echo('The Page title is now ' + this.getTitle());
});
casper.run();
休息 1:
休息2:
我真的希望我可以在 casper 控制台中运行 casper 命令,并在另一个窗口中查看它们对 DOM 的影响,这看起来就像调试器会给你的那样。有没有办法用 casperjs 做到这一点?
最佳答案
当您到达断点时,casper 执行会暂停。您可以访问 casper 对象上的任何属性,但要运行 casper 命令,您需要将它们添加到队列中。这只是意味着将其包装在 casper.then()
中,然后单步跳过断点。
在第一个中断处,如果您运行 casper.steps.length
,则您有 5 个步骤,并且当前处于第 3 步(casper.step
的输出)。
然后您可以添加包含在 casper.then()
中的 getTitle
代码:
casper.then(function() {
this.echo('The Page title is now ' + this.getTitle());
});
现在casper.steps.length === 6
;您已在当前步骤之后添加了一个步骤,但仍处于断点。
因此继续/执行,您的文本将被打印。如果您愿意,可以在 casper.then()
block 内添加其他 debugger
语句;然后您将在第 4 步(您新添加的步骤)处暂停。脚本选项卡将使用仅包含您的函数的小脚本进行更新。
有关 casper.then
的更多信息,请参阅此答案:https://stackoverflow.com/a/11957919
关于debugging - 无法使用 PhantomJS 远程调试器在断点处访问 casper 实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29369162/
docs strate你可以通过 options反对casperjs.create()包括要注入(inject)到客户端页面的 js clientScripts。 docs also state你不应
可以在 casper.evaluate() 中使用 casper 函数并在其中包含 jquery 代码吗?我需要以类似于 jquery 的方式迭代元素。 我正在加载 jquery.js 库 这是我的尝
我做了这个小测试: casper.test.begin('Test', function() { casper.start(); casper.then(function() { casper
我正在将 casper JS 数据保存到 CSV 文件中,但如何转义逗号才能使其不作为新列包含在 CSV 文件中? 例子 var data = "asdf, fff"; fs = require('f
我想做的是声明两个caspers,两个将登录到某个站点,一个充当管理员,另一个充当典型用户。我想在一个脚本中完成。 是否可以在一个脚本中声明两个或多个 casper?就像这个: var casper1
这是一个有点棘手的问题。 我非常熟悉 javascript,但是我在一个使用 PhantomJS 和 CasperJS 自动抓取网站的项目中。这些对我来说都是全新的主题。 我能够弄清楚如何使用 Cas
我试图弄清楚 Casper.js 到底是如何使用底层 Phantom.js 来移动 mouse 的。 。 我发现casper.page.sendEvent()是负责的,但是 sendEvent 定义在
在下面的代码中,我想调用checkMainBox(cthis)。我想对其进行设置,以便该函数返回检索到的数字或返回 false。但在 checkMainBox() 中我不知道如何返回值。返回的数字未定
我尝试使用以下程序等待 5 秒,然后再单击下一个链接。但我看到 casper.wait 根本不等待 5 秒。 我需要等待 5 秒,以便我想要抓取的 url 上的 ajax 代码有足够的时间加载。 va
我使用以下脚本来循环访问页面的选项以获取后续值: var casper = require('casper').create(); casper.on('remote.message', functi
使用 CasperJS 1.1 和以下代码,我可以从网页中获取有用的 DOM html。 casper.each(c.getElementsInfo(xpath), function(casper,
我有一些 HTML Lane 1 Uncounted Count 我能够计算行数 casper.test.assertElementCount('[data-automat
我为我们的应用程序开发了 CasperJS 脚本。有时它工作得很好,但有时却达不到我们的预期。 你能帮我一下吗?我可以在哪里改进我的脚本来实现它? 请找到下面的脚本。 casper.test.comm
我制作了一个快速脚本来从 Reddit 帖子列表中捕获屏幕截图。该脚本从 json 文件中获取 reddit url(示例如下所示),然后访问每个页面以捕获屏幕截图。 该脚本对于大多数人来说效果都很好
我一直在使用开源数据集提供程序 Casper 来实现 Java 中数据库对象集合的内存表示。 Github 存储库:https://github.com/casperds/casperdatasets
有没有什么办法可以使用casper.js登录页面然后显示页面?我可以截屏,我希望它是实际页面。 到目前为止,这是我所拥有的,尽管我确信这是非常错误的: var casper = require('ca
向函数添加 this.echo 命令会导致在设置链接之前调用 casper.run 方法 var casper = require('casper').create(); function getLi
是否可以将函数传递给 casper.evaluate() var casper = require('casper').create({ //verbose: true, logLev
我想在我的脚本中多次调用 casper.start()。 我试过: var ids = [1,6,13]; ids.forEach(function(id) { casper.start('h
我需要将测试结果存储在任何存储器中。但不幸的是,它在任何时候引发异常“CasperError:找不到模块网络”时都不适用于任何数据库驱动程序: var require = patchRequire(r
我是一名优秀的程序员,十分优秀!