僵尸浏览器调用打开函数后无法打开窗口



工具

尝试1

  • 达尔文14.3.0达尔文内核14.3.0版
  • io.js v1.8.1
  • 僵尸版本4.0.7 2015-04-10

尝试2次

  • Linux ubuntuG5 3.13.0-48-powerpc64-smp
  • node.js版本0.10.38
  • 僵尸版本3.1.0 2015-03-15

命令:

const Browser = require('zombie');
var url = 'https://google.com'
var browser = new Browser();
browser.open(url=url)
browser.open('http://google.com', function(err) { browser.assert.success();
});
browser.assert.text('title', 'Google');

两台机器上的结果减去文件路径差异:

assert.js:93
throw new assert.AssertionError({
^
AssertionError: No open window with an HTML document
at Browser.queryAll (/home/dmmmd/Dropbox/node_js_projects/node_modules/zombie/lib/index.js:432:5)
at Assert.text (/home/dmmmd/Dropbox/node_js_projects/node_modules/zombie/lib/assert.js:307:33)
at Object.<anonymous> (/home/dmmmd/Dropbox/node_js_projects/affinity-zombie/sample_zombie.js:7:16)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:935:3

在僵尸浏览器上阅读文档后,我缺少了什么?提前谢谢。

我也尝试了其他一些url,甚至是localhost,但都没有成功。

JavaScript、node.js、io.js和僵尸对我来说都是新的,所以我基本上只是遵循文档中的食谱和stackoverflow问题。如果有任何建议,我将不胜感激。我怀疑我错过了一些非常简单的东西。

这个问题已经有一段时间没有答案了,但我最近一直在处理类似的错误消息。

TL;DR-用户browser.visite而不是browser.open(),并传入回调函数以确保浏览器的状态正确填充。

你可以通过多种方式做到这一点:

  1. 使用静态方法Browser.visit()
const Browser = require('zombie');
var url = 'https://stackoverflow.com'
Browser.visit(url, function(error, browser) {
browser.assert.text('title', 'Stack Overflow');
});
  1. 使用实例方法browser.visit()
const Browser = require('zombie');
var url = 'https://stackoverflow.com'
var browser = new Browser();
browser.visit(url, function() {
browser.assert.text('title', 'Stack Overflow');
});
  1. 使用browser.visit()返回的promise
const Browser = require('zombie');
var url = 'https://stackoverflow.com'
var browser = new Browser();
browser.visit(url).then(function() {
browser.assert.text('title', 'Stack Overflow');
});
  1. 如果您想在访问后重用浏览器对象,请向browser.visit()传递一个无操作回调,以确保填充浏览器的状态
const Browser = require('zombie');
var url = 'https://stackoverflow.com'
var browser = new Browser();
browser.visit(url, function(){}); // NB: no-op callback!
browser.assert.text('title', 'Stack Overflow');

browser.open()方法打开一个新的浏览器选项卡,并获取一个包含url属性的JavaScript对象,因此您的原始代码出现语法错误,行

browser.open(url=url)

应读取

browser.open({url: url})

但目前尚不清楚open方法是否真的让新选项卡访问了url——至少不是粗略地阅读了源代码。为了安全起见,请使用browser.visit()。

对我来说,问题是在使用browser.fillbrowser.pressButton时,我所做的是在browser.assert(...)之前调用done()

最新更新