【问题标题】:PhantomJS -headless browseerPhantomJS - 无头浏览器
【发布时间】:2016-11-21 14:21:58
【问题描述】:

我必须自动化测试用例,在该测试用例中创建特定仪表板中的列表。我们决定使用 PhantomJS 无头浏览器。由于我是新手,我尝试自己创建测试。以下是我打开目标网站所遵循的步骤。

  1. 创建目录phantoms
  2. cd phantoms 并使用命令 npm install phantom --save 安装了幻像模块
  3. 创建文件createlist.js

createlist.js 内容:

var phantom = require('phantom');
var page = require('webpage');
page.open('http://facebook.com', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
    page.render('example.png');
  }
  phantom.exit();
});

当我执行命令node create_list.js 时,我收到以下错误:

page.open('interact2.responsys.net/interact/jsp/jindex.jsp&#‌​39;, function(st atus) { ^ TypeError: page.open is not a function at Object.<anonymous> (C:\Users\shilshet\New folder\phantom\create_list.js:3 :6) at Module._compile (module.js:413:34)

如果我尝试执行类似

的命令
phantomjs  C:/Users/shilshet/New folder/phantom/create_list.js

我收到这个错误

bash: phantomjs: command not found

注意:我是用cygwin来执行命令的

我做错了什么?我也将 phantomjs 模块安装在与我的 node.js 相同的文件夹中。

除了使用无头浏览器之外,谁能告诉我,如何通过 REST API 调用在 Oracle responsys 中创建配置文件列表?

【问题讨论】:

  • 对不起,小修正。当我执行命令 node create_list.js 时,我收到错误 page.open('interact2.responsys.net/interact/jsp/jindex.jsp', function(status) { ^ TypeError: page.open is not a function at Object. (C:\用户\shilshet\New folder\phantom\create_list.js:3 :6) 在 Module._compile (module.js:413:34)
  • 如果您想询问有关 Oracle responsys 的问题,您应该专门为此目的打开另一个问题。

标签: phantomjs responsys


【解决方案1】:

虽然这里的第一个答案应该有效,但这并不是完成您需要的最佳方式。解决问题的更简洁的方法是将 phantomjs 可执行文件的位置添加到在 ~/.bash_history 等文件中定义的 PATH 变量中。

文件可能没有定义,所以可能需要创建文件,然后添加PATH="/path/to/phantomjs/executable"

如果您更喜欢通过 GUI 编辑 PATH 变量:Edit PATH variable via Windows GUI

您需要这样做的原因是,您的系统本身会遍历“PATH”变量中定义的路径,以确定可执行文件的位置。 由于 phantomjs 不包含在 PATH 变量中(环境中不存在),并且您尝试运行“phantomjs”,您的系统根本不知道要调用哪个可执行文件(或者更确切地说,它不知道它存在)

这是更好的方法的原因是:

  1. 您无需在每次要运行 phantomjs 时都明确写出它所在的路径(看起来也更简洁)
  2. 如果您从多个文件调用 phantomjs,并且 phantomjs 的存储位置发生了变化,会发生什么情况?如果您在任何地方都明确输入了 phantomjs 的绝对路径,那么您需要更改您输入的每个地方!恶梦!使用这种方法,您只需在一个地方进行更改;定义 PATH 变量的文件
  3. 将新文件路径添加到 PATH 环境变量是非常常规的做法。你不应该把它弄乱,但在这种情况下添加它是有意义的

为此:“除了使用无头浏览器之外,谁能告诉我,如何通过 REST API 调用在 Oracle responsys 中创建配置文件列表?”...我建议提出一个单独的问题。我个人不知道,但如果您提出新问题,您可能会得到其他人的支持。

希望这会有所帮助!如果您需要任何帮助,请告诉我。

【讨论】:

  • 感谢您调查问题。
  • 感谢您调查该问题。但我仍然面临问题我尝试在 Windows 机器中设置路径,但在设置路径“C:\Users\shilshet\phantom\node_modules\phantomjs-prebuilt\ bin" , 失败 $ phantomjs --version module.js:341 throw err; ^ 错误:在 Function.Module 的 Function.Module._resolveFilename (module.js:339:15) 处找不到模块“C:\cygdrive\c\Users\shilshet\phantom\node_modules\ph ntomjs-prebuilt\bin\phantomjs” ._load (module.js:290:25) 在 Function.Module.runMain (module.js:447:10) 在启动时 (node.js:140:18) 在 node.js:1001:3
  • 再观察一下,如果我将路径设置为 C:\Users\shilshet\phantom\node_modules\phantomjs-prebuilt\bin\phantomjs 并尝试获取版本“phantomjs --version”我收到错误“bash:phantomjs:找不到命令”
  • 您应该将路径设置为 C:/path/to/phantomjs.exe - 这里的关键是将您的路径指向 .exe 文件,这样当您的系统尝试执行 phantomjs 时(当您键入'phantomjs param1 param2 ...')它调用可执行文件。请尝试一下,如果有效,请告诉我@Shilpa
  • 嗨,肖恩,谢谢。我根据您的输入进行了更改,它可以正常工作,但我观察到,如果我下载 Windows 的 zip 文件,它有 .exe 文件,但如果我执行“npm install phantomjs" 我可以看到 node_modules 和 phantomjs 脚本。两者到底有什么区别?
【解决方案2】:

你混淆了两种运行 PhantomJS 的方式。

更直接、更简单的方法是从命令行启动 PhantomJS 并将脚本路径作为参数提供给它。在 Windows 上,你会这样做:

"C:/Users/shilshet/New folder/phantom/phantomjs.exe" "C:/Users/shilshet/New folder/phantom/create_list.js"

注意这里的引号,它们是必需的,因为文件名中有空格。

【讨论】:

  • 我在使用 npm install phantom --save 后没有找到 phantomjs.exe 文件。请你告诉我它在哪里,因为我通过 npm 安装后,我可以看到 node_modulues 文件夹那 \phantomjs-prebuilt\b‌​in
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
相关资源
最近更新 更多