Articles of zombie.js

摘要Auth与Zombie.js

我想使用Zombie.js连接到使用摘要身份validation的网站。 我可以从运行时访问http请求标头吗? 或者我需要补丁僵尸添加摘要身份validation支持?

如何让ZombieJS无限期地等待一个网站

我正在使用zombieJS刮一个veeeeeeeery慢的网站。 我尝试了很多东西让它变慢,但我收到了很多东西 TypeError: Cannot use 'in' operator to search for 'compareDocumentPosition' in null 错误。 我试图添加到我的pressButton函数如下: browser.wait({waitDuration:'700s',element:“pre”}); 同时使用此configuration初始化浏览器: browser = new Browser(); browser.maxWait = 10000000; browser.runScripts = false; browser.loadCSS = false; browser.waitFor = 500000; 但我仍然在几秒钟后收到上述错误…

使用ZombieJS从asynchronous点击事件触发的Ajax中获取Http错误

所以我有一个网页,使用淘汰赛,我有一个点击处理程序。 一旦点击,它将触发ajax请求到一个API服务器,返回一个上下文的HttpStatus结果。 所以,例如,如果我是未经授权的,我会得到一个401响应,如果可以的话,我会得到200.所以这个问题是基于我怎样才能捕获在僵尸错误作为.click("#some-button", function(error) { /* No Error */ })从callback没有返回错误,那么有没有其他的方法来尝试并捕获http状态码?

zombie.js触发的AJAX请求没有完成

我试图用Zombie.js编写unit testing。 我的问题是,使用browser.evaluate启动时,即使AJAX请求在包含在带有脚本标记的页面上时执行得很好,也不会完成。 我有三个文件: index.html :僵尸加载的HTML页面 hello.txt :内容为hello, world的纯文本文件 main.js :加载index.html的zombie.js程序 使用命令python -m SimpleHTTPServer 8009来提供index.html和hello.txt 。 (请注意,我正在使用dev.local ,这是我的hosts文件中的127.0.0.1的同义词) 这里是index.html 。 它发出一个AJAX请求来检索hello.txt 。 这工作正常: <!DOCTYPE html> <html lang='en'> <head> <meta charset='UTF-8' /> <title></title> </head> <body> <script type='text/javascript' src='https://code.jquery.com/jquery-2.2.0.min.js'> </script> <script type='text/javascript'> $.support.cors = true; var doRequest = function(msg) { $.support.cors = true; return $.ajax({ url: "http://dev.local:8009/hello.txt", […]

Zombie.js jQuery加载错误'j.getClientRects不是一个函数'

所以首先我已经阅读了这个堆栈溢出问题,它看起来不像我的同一个问题。 基本上我试图使用Mocha和Zombie.js在我的Node.js网站上运行一些testing。 我试图检查,看看我是否可以创build一个用户。 最后我想检查一下,看看我的bootstrap模式是否存在。 基本上我有引导模式包装在EJS if语句,所以有挑战性的机会,它可能不存在。 所以这就是为什么我试图运行testing。 但是目前它甚至没有使用browser.assert.success(); 所以我现在只是试图解决这个问题,然后继续检查元素。 browser.visit('/login', function() { browser.fill('email', 'test1@test.com'); browser.fill('password', 'testtest'); browser.pressButton('Login').then(function() { browser.assert.success(); }).then(done, done); }); 在这种情况下,我应该在浏览器当前所在的页面上运行以下代码。 <script> $("#paymentModal").modal('show'); </script> 运行这个unit testing时,会给我下面的错误。 https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js:3 }return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e–)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpan TypeError: j.getClientRects […]

Zombie.js点击Javascript链接

我使用Node.js与Zombie.js刮。 在一些页面上,我需要点击一个Javascript链接 这是页面的例子 http://www.indotrading.com/company/berkat-jaya-electronics.aspx 而我想要点击的部分是<a class="showme".. > </a> ,它调用了一个javascript。 我怎样才能使用Zombie.js? 或者有什么替代Zombie.js可以处理JavaScript链接?

Zombie.js错误:超时:没有得到加载在这个页面上的所有资源

我有一个问题,其中Zombie.js抛出一个错误Error: Timeout: did not get to load all resources on this page 。 它总是超级随机的,似乎总是在不同的testing中发生。 我曾经有以下的代码行来防止这个问题。 Browser.waitDuration = '60s'; 问题是最近Stripe.js导致这个问题,我的unit testing花了额外的55秒。 看到这个问题 。 所以Stripebuild议我删除该行。 当然,我的testing开始再次运行得更快。 但是我已经忘记了我添加了这一行来防止这个超时错误。 任何想法如何解决这个问题,同时确保我的unit testing不会花费过长的时间?

未知编码:Zombie.js中的iso-8859-1错误

当我运行zombie.js时,出现错误: 未知编码:iso-8859-1 TypeError:未知编码:在Browser.Resources.decodeBody(/ Users / bendytree / projects / testzombie / node_modules / zombie)上的Buffer.toString(buffer.js:432:13)处的iso-8859-1 /lib/zombie/resources.js:400:37) 这是导致错误的代码: var Browser = require("zombie"); var browser = new Browser() browser.visit("http://www.amazon.com/", function () { console.log(browser.html()); }); 亚马逊不是我真正使用的网站,但它是ISO-8859-1的例子。 GitHub讨论这个问题有一个问题,但是没有发布解决方法。 线程让我觉得它是固定的,但我在最新版本的僵尸~2.0.0-alpha24 ,这仍然是一个问题。 有任何想法吗?

查询select器在zombie.js中返回什么?

我正在用node.js使用sys.debug()语句来学习Zombie.js来跟踪我的进度。 什么是这样的调用返回t = browser.body.querySelector(".navigation"); ? 如果没有浏览器开发工具或类似于php的var_dump很难说出发生了什么。 该API并没有真正解释它。 我如何解开这个? t = browser.body.querySelector(".navigation"); sys.debug(t); //returns "DEBUG: [ UL.navigation]" I don't know what this means.

使用zombie.js加载jQuery页面时,“超出最大调用堆栈大小”

大约4天后,我在node.js项目上的大部分functiontesting套件都失败了,无论是在Linux上的CI还是在OS X上的本地functiontesting套件。我不认为这是由于我的代码库中有任何更改,因为我可以回滚到git回购的早期状态,看到过去通过的testing现在都失败了。 它在不同平台上失败的事实使我认为这不太可能是一个特别的本地环境变化。 我怀疑这可能是依赖关系树中的某个地方的问题,并且很可能是由zombie.js使用的一个包中,因为我的应用似乎仍然工作正常。 但是,在testing上次工作时,我没有logging树中所有软件包的版本。 我已经减less到以下testing用例: so_test.js "use strict"; var zombie = require('zombie'); var browser = zombie.create({ debug: true }); var assert = require('assert'); describe('Stack Overflow', function() { it('should be alive', function(done) { browser.visit('http://stackoverflow.com/') .then(function() { browser.dump(); assert.equal(browser.location.pathname, '/', 'It is not the SO home page.'); assert.ok(browser.success, 'It did not load successfully.'); }) .then(done, done); […]