- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
TLDR;我的问题是:有没有一种方法可以使 browserify 不使用自己的实现覆盖 require
,而是让它使用不同的方法名称(例如 browserifyRequire
)来满足其自己的所有内部需求。要了解为什么我需要这样做,请继续阅读...
我正在尝试使用 CasperJS 编写一些自动化测试并在 SlimerJS 中运行它们——而不是默认的 PhantomJS(尽管据我所知,我会遇到与 PhantomJS 相同的以下问题)。
我真的想弄清楚如何在 CoffeeScript 中编写这些内容。事实证明,CasperJS 或 SlimerJS 如今与 CoffeeScript 配合不佳。文档的建议是在运行 casper 之前编译为 JS。好吧...不是很方便,但我可以应付。事实上,我还发现 require
在这些工具中解析路径的方式并不像在 Node 中那么简单,因此在运行之前进行捆绑也应该有所帮助。
但现在我在尝试运行捆绑代码时遇到了一系列新问题。我正在使用 Browserify 来实现这一点。
在我的测试代码中,我需要require('casper')
。 CasperJS 世界中的标准实践。因此,我必须通过将 "browser": { "casper": false }
放入我的 package.json
中,告诉 browserify 不要捆绑 CasperJS。到目前为止没有问题。但问题来了:
Browserify 覆盖内置的 require
函数,提供自己的 require
实现,该实现可以完成使 browserify 工作的所有操作。 CasperJS 可以正常使用,直到遇到 require('casper')
指令。这是 CasperJS 必须执行 require
'ing 的一次,而不是 browserify。但这失败了。
我非常确定 CasperJS 无法处理 Browserify 覆盖 require
的事实,因为 CasperJS 实现了自己的 require
方式。为了测试这个假设,我手动编辑了生成的包,将每次出现的 require
重命名为 browserifyRequire
—— 包括 browserify 的 require
实现。我唯一保持不变的 require
是对 require('casper')
的调用,因为这是我需要 CasperJS 处理 require
的一次。事实上,这使得事情按预期进行。
同样,有没有办法让 browserify 使用不同的名称作为其内部 require
?我想我可以编写一个脚本来在捆绑后进行此更改,但我更愿意弄清楚如何通过配置来执行此操作。
也许除了 Browserify 之外,还有另一种在 CasperJS 中捆绑和运行 CoffeeScript 的解决方案?我还没找到……
最佳答案
找到了一个合理的解决方案 - 可以作为 npm
脚本运行的解决方案,例如通过添加到 package.json
npm run build-test-bundle
"scripts": {
"build-test-bundle": "browserify -t coffeeify casper-coffee-test.coffee | derequire | sed 's/_dereq_..casper../require(\"casper\")/g' > casper-coffee-test.compiled.js"
},
该命令序列执行以下操作:
关于javascript - 使用 Browserify 捆绑 CasperJS+SlimerJS 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36752852/
运行测试时获取。 FAIL 35 tests executed in 16.806s, 35 passed, 0 failed, 2 dubious, 0 skipped. “可疑”意味着什么?如何查
是否有人已经使用 casperjs 实现了著名的“页面对象模式”,从长远来看,它对于测试的可维护性非常有用? 当您必须将测试的机制和目的分开时,使用它非常非常酷。以这种方式编写测试会变得更加愉快。 有
所以,我试图在我的服务器上运行 casperJS 作为 cron 作业,这是 crontab: * * * * * /usr/local/bin/casperjs /var/www/javascrip
我知道如何禁用图像和插件,但似乎没有明显的选项来禁用 CasperJS 中的 css。 有谁知道这是如何工作的? 最佳答案 假设您想抑制所有外部样式表的加载,您可以通过中止加载 css 文件的请求来实
我在删除网站时从创建的 URL 下载文件时遇到问题。目前我发现了一个文件的月份和年份,然后替换了 url 中的值并尝试从该位置下载。我了解到您无法使用评估范围内的下载功能。 this.evaluate
在 CasperJS 中,如何在使用 casper.thenOpen() 时保持 session 例如: var casper = require('casper').create(); casper
我希望我的 casper 在 session 期间登录并保持登录状态。有可能吗?如果是这样,如何? 最佳答案 如果你想在 CasperJS 中存储 cookie,你可以使用 PhantomJS coo
我用 casperjs 编写了一些测试。他们与 phantomjs 一起运行得很好。但是,当我尝试通过以下命令使用 slimerjs 时: casperjs --verbose --engine=sl
我用 casperjs 编写了一些测试。他们与 phantomjs 一起运行得很好。但是,当我尝试通过以下命令使用 slimerjs 时: casperjs --verbose --engine=sl
我想单击“提交”按钮,等待下一页加载,然后在第二页上获取html。。我先做然后再运行,但然后一步仍在首页上运行。有任何想法吗? var casper = require('casper').creat
在我的页面自动化脚本中,当我单击标签链接时,将打开一个新窗口。链接的 url 是由复杂的 javascript 生成的。 办理任务 触发后 url 变为: https://oa.phicomm.co
CasperJS(带有 phantomJS)可以直接在浏览器中运行而不是通过命令行运行吗? 我想从浏览器运行交互式测试,我从用户那里获取输入并相应地进行。我想将 casperJS 作为在浏览器中执行的
我正在尝试使用 CasperJS 将图像上传到网络表单。 我的表格看起来像这样: ... Campaign Banner
错误: casper.test property is only available using the `casperjs test` command 在我的整个代码库中搜索了“casper.tes
假设我有一组网址。我不想使用 thenOpen 函数。因为它等待每个以前的 url 被加载并且它减少了加载时间。 casper.each(hrefs,function(self,href){
我正在尝试导航到从脚本本身创建的 url。 此示例代码不像(我曾)预期的那样工作。不知道为什么:( var casper = require('casper').create({ viewpo
我有一个链接列表,我必须模拟这些链接才能使用CasperJS进行点击。他们都共享同一个类(class)。 但是,使用this.click('.click-me')仅单击第一个链接。 单击所有链接的正确
casper.then(function(){ phone_number = '7wqeqwe6'; phone_password = 'Teqweqweqw34'; }); casper.t
我如何告诉 casper 不要加载图像、css、js 视频等。所以我只对 DOM 元素感兴趣。 最佳答案 看看 CasperJS API . var casper = require('casper'
在Phantom中生成PDF时,我可以这样设置纸张大小: page.paperSize = { height: '8.5in', width: '11in', orientation: '
我是一名优秀的程序员,十分优秀!