问题标签 [slimerjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
387 浏览

node.js - 如果我们将它与 PhantomJS 一起使用,在 CasperJS 中滚动不起作用

如果我们在没有 and 的情况下使用 casper--engine=slimerjscasper.scrollToBottom();不起作用casper.page.scrollPosition = {top: scrollHeight, left: 0};

我的意思是,如果我们只使用$ casperjs file.js它就行不通。但有了$ casperjs --engine=slimerjs file.js它就足够了。

有什么建议吗?也许我应该在命令行中使用一些东西?喜欢--webdriver?我试过--ssl-protocol=any了——它也没有帮助。或者也许我应该包含 JS 文件,例如page.includeJs('https://www.my-site.com/thisjsfile.min.js')

PS:我不相信它会有帮助,但这里是代码:

即使我scrollToBottom()改为:

我还包括了 Anrtjom 的处理错误事件,有一个链接

我有错误:

0 投票
0 回答
274 浏览

javascript - 在 node-slimerJS 或为 slimerJS 全局设置 pageContent

我正在尝试使用node-slimerjs 网桥为节点 js设置网络捕获内容。我会使用普通 slimerJS 做的如下:

但我必须使用 node-slimerjs 库中的 getter setter 函数,因此使用这些函数我使用以下代码:

但是 setter 函数没有正确设置值,我留下了空的正文,用于带有 text/* 和 html/* 类型的网络响应。设置 captureContent 后,如果我尝试使用 console.log 读取值,我可以看到只为捕获内容设置了一个空对象:

从节点控制台:

捕获内容::: [ {}, {} ]

我还尝试创建新的正则表达式对象并使用 setter 函数设置它们,但得到了相同的结果。

SlimerJS 文档中指出,默认情况下这仅限于避免内存问题。所以有可能取消限制......

0 投票
1 回答
78 浏览

javascript - 使用 Browserify 为 CasperJS+SlimerJS 捆绑代码?

TLDR;我的问题是:有没有办法让browserify 不require使用它自己的实现覆盖,而是让它使用不同的方法名称(例如browserifyRequire)来满足它自己的所有内部需求。要了解我为什么需要这样做,请继续阅读...

情景

我正在尝试使用 CasperJS 编写一些自动化测试并在 SlimerJS 中运行它们——而不是默认的 PhantomJS(尽管据我所知,我会遇到与 PhantomJS 相同的以下问题)。

真的很想弄清楚如何在 CoffeeScript 中编写这些。事实证明,CasperJS 或 SlimerJS 现在在 CoffeeScript 上表现不佳。文档的建议是在运行 casper 之前编译为 JS。好的...不是超级方便,但我可以处理它。事实上,我还发现require在这些工具中解析路径的方式并不像在 Node 中那样简单,因此在运行之前进行捆绑也应该对此有所帮助。

但是现在我在尝试运行捆绑代码时遇到了一系列新问题。为此,我正在使用 Browserify。

问题

在我的测试代码中,我需要require('casper'). CasperJS 世界的标准实践。所以我不得不告诉 browserify 不要捆绑 CasperJS,把"browser": { "casper": false }我的package.json. 到目前为止没有问题。但问题来了:

Browserify 覆盖了内置require函数,提供了它自己的实现require来完成使 browserify 工作的所有事情。require('casper')在遇到指令之前,CasperJS 很好。这是 CasperJS 必须做的一次require,而不是 browserify。那失败了。

不完整的解决方案

我很确定 CasperJS 无法处理 Browserify 覆盖的事实require,因为 CasperJS 实现了自己的requireing 方式。为了验证这个假设,我手动编辑了生成的包,将每次出现的 重命名requirebrowserifyRequire- 包括 browserify 的require. 我唯一require没有改变的是对 的调用require('casper'),因为那是我需要 CasperJS 处理requireing 的一次。事实上,这使事情按预期工作。

问题

同样,有没有办法让 browserify 使用不同的名称作为它自己的内部名称require?我想我可以在捆绑后编写一个脚本来进行此更改,但我更愿意通过 config.xml 弄清楚如何做到这一点。

另一个问题

也许除了 Browserify 之外,还有另一种在 CasperJS 中捆绑和运行 CoffeeScript 的解决方案?我还没有找到一个......

0 投票
1 回答
177 浏览

slimerjs - mocha-phantomjs-core - slimerjs 挂起没有任何错误

使用mocha-phantomjs-coreslimerjs 我设法从 CMD 成功运行我的测试:

Slimerjs 窗口打开,我看到一个浏览器窗口,一切似乎都很好,但 CMD 没有完成(似乎在等待什么)。在我关闭 slimerjs 窗口之前什么都没有发生。我想将测试结果(使用 TAP 报告器)作为文件输出。

那可能吗?

0 投票
0 回答
386 浏览

ajax - 带有casperjs + slimerjs的console.log正确的UTF-8?

0 投票
0 回答
213 浏览

javascript - phantomjs JS重度网站截图

我在 SO 中使用了几乎十几个答案的不同变体和建议,但似乎没有什么能帮助解决我将在下面解释的这个问题。

有一些网站,其中 phantomjs 截图看起来很糟糕,页面加载完成后通过 javascript 加载内容,因此截图看起来缺少内容。我还在项目的 Github 问题页面上发布了一个问题,但答案没有帮助。

https://github.com/ariya/phantomjs/issues/14341

上下文中的站点之一是https://angular.io/

在使用 setTimeout 进行一定延迟后,我尝试在 Page Load Finished 上截屏,还尝试按照此处所述实现 waitFor 方法:使用 phantomjs-node 实现 waitFor 功能

任何比所附网站截图更好的东西都将被接受为答案。要测试我在说什么,可以使用此代码:https ://github.com/crackjack/bulk-shot/

这段代码有效,但如预期的那样只给出了一个部分。如果您进一步增加高度,则屏幕截图效果不佳。

PS:SlimerJS 确实可以很好地截取屏幕截图,我觉得这是一个 WebKit v/s Gecko 的东西。在此处输入图像描述

0 投票
0 回答
639 浏览

node.js - slimerjs 无法解析所需的模块编码

我见过slimerjs Can not resolve required module, works with phantomjs,但是那个解释绝对没有,所以我敢再问这个问题。

我已经这样做了:

那么,显然,它应该在那里?

现在,我正在尝试这个测试脚本,如https://www.npmjs.com/package/encoding中所述- 我们称之为test_modload.js

...我尝试使用以下命令运行它node

显然,在这里我必须使用NODE_PATH

...并且此命令可以正常通过(即不返回任何内容,并且不打印任何错误)。

但是如果我们尝试这个casperjs呢?脚本变为:

...如果我运行:

...再次一切都很好(即不返回任何内容,并且不打印任何错误)。

casperjs但是让我们用slimerjs引擎试试这个:

呃……我猜NODE_PATH是失踪了?

该死的,我已经没有选择了。我现在该怎么办,我怎样才能开始encoding工作slimerjs?请注意,应该使用https://docs.slimerjs.org/current/api/require.htmlslimerjs中的文档状态,但是,对于独立的,它会抱怨:require.pathsnode

错误:require.paths 被删除。请改用 node_modules 文件夹或 NODE_PATH 环境变量。

... whileslimerjs不输出此错误;但是,如果我这样做,仍然没有改变require.paths.push('/home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules');- 它仍然“无法解析“编码”模块”。

只是为了确保我有正确的路径,这里有一个清单:

...所以显然模块在那里。

那么,到底如何才能在脚本slimerjs中找到并使用该模块呢?encoding

0 投票
1 回答
142 浏览

slimerjs - Slimer Js 网页评测

它被调用一次,但我的网页是动态变化的。我怎样才能拦截每一个变化?

0 投票
0 回答
925 浏览

javascript - 如何正确地将鼠标悬停在 PhantomJS/CasperJS 中的元素上

在我看来,获取动态内容的问题确实非常模糊。我试图找到一些有用的信息,使用了许多不同的代码示例,当然根据我的目的对其进行了修改,但不幸的是,没有任何结果(

我需要从这里获取一些内容。尝试详细解释我面临的问题(需要注意,我所做的一切都是为了我自己的使用!)。

主网站页面具有主导航(Main nav pic)列表,每个列表类“menu__category-trigger”。每个“menu__category-trigger”都有自己的下拉菜单容器。所有这些下拉菜单容器都具有类“menu__categories-dropdowns”的父包装器。当主页加载“menu__categories-dropdowns”为空时,那里没有任何下拉菜单容器。但是,当我将鼠标悬停在任何“menu__category-trigger”上时,所有“menu__categories-dropdowns”都会出现并停留在页面上,直到重新加载。

我需要在 PhantomJS/CasperJS 的帮助下获取这些内容,但我不明白该怎么做。我的代码是:

我的每一步都在代码中注册)

0 投票
1 回答
592 浏览

javascript - waitForSelector 中的 casperjs/slimerjs 无效选择器,在 getElementByXPath 中有效?

我有这个 HTML 文件test_xpath.htm

在此文件的文件夹中,我将 PHP CLI > 5.4 作为服务器运行,如下所示:

...所以 HTML 页面在http://localhost:8080/test_xpath.htm.

然后我运行这个 SlimerJS 代码:

如果我按原样运行 JS 代码 - 也就是说,该waitForSelector部分被禁用if(false)- 那么一切运行正常。

if(false)但是,如果我通过更改to 来启用该部分if(true),我会得到:

我真的不明白这一点,因为http://docs.casperjs.org/en/latest/modules/casper.html#waitforselector说:

等待直到远程 DOM 中存在与提供的选择器表达式匹配的元素以处理任何下一步

...其中http://docs.casperjs.org/en/latest/selectors.html说:

CasperJS 大量使用选择器来处理 DOM,并且可以透明地使用 CSS3 或 XPath 表达式。

所以,XPath 应该没问题 - 更重要的是,我使用的是完全相同的 XPATH

...它在那里工作,但它失败了:

为什么会发生这种情况 - 我哪里出错了?如果可能的话,我如何在 中使用这个 XPath waitForSelector