0

我正在对我的 javascript 代码进行单元测试。我更喜欢使用无头浏览器以便于运行。当我安装了一些依赖项时它运行良好,但是当我安装 phantomjs 时,它有一个错误。

C:\Phantomjs>npm install -g phantomjs npm WARN 不推荐使用 phantomjs@2.1.7:包重命名为 phantomjs-prebuilt。请更新 'phantomjs' 包引用到 'phantomjs-prebuilt' npm WARN deprecated node-uuid@1.4.8: Use uuid module instead npm WARN deprecated strong-cookie@2.2.2: ReDoS 漏洞解析 Set-Cookie h ttps:/ /nodesecurity.io/advisories/130 C:\Users.ra\AppData\Roaming\npm\phantomjs -> C:\Users.ra\AppData\Roaming\npm\node_modules\phantomjs\bin\phantomjs

phantomjs@2.1.7 安装 C:\Users.ra\AppData\Roaming\npm\node_modules\ phantomjs 节点 install.js

考虑在 C:\Users.ra\AppData\Roaming\npm\phantomj s.CMD 找到的 PhantomJS 看起来像一个 npm install -g在 windows 上;跳过已安装的版本。下载 https://github.com/Medium/phantomjs/releases/download/v2.1.1//phanto mjs-2.1.1-windows.zip 保存到 C:\Users.ra\AppData\Local\Temp\phantomjs\phantomjs -2.1.1-wind ows.zip 使用代理http://.ra :******@proxy:3128/ 接收中...

发出请求时出错。错误:无法建立隧道套接字,ClientRequest.onConnect (C:\Users.ra\AppData\Roaming\npm\node_mo dules\phantomjs\node_modules\tunnel-agent\index.js:165:19) 处的 statusCode=502 Object.onceWrapper (events.js:320:30) at emitThree (events.js:135:13) at ClientRequest.emit (events.js:216:7) at Socket.socketOnData (_http_client.js:470:11) at emitOne (events.js:115:13) 在 Socket.emit (events.js:210:7) 在 addChunk (_stream_readable.js:264:12) 在 readableAddChunk (_stream_readable.js:251:11) 在 Socket.Readable。推(_stream_readable.js:209:10)

请在https://github.com/Medium/phantomjs报告此完整日志npm WARN 错误:EPERM:不允许操作,scandir 'C:\Users.ra\AppData\Roaming\npm\node_modules\phantomjs\node_modules\dashdash\node_modules' npm WARN { 错误:EPERM:不允许操作,scandir 'C :\Users.ra \AppData\Roaming\npm\node_modules\phantomjs\node_modules\dashdash\node_modules' npm WARN 堆栈:'错误:EPERM:不允许操作,scandir \'C:\Users\p ardillo.ra\AppData\漫游\npm\node_modules\phantomjs\node_modules\dashda sh\node_modules\'',npm WARN errno:-4048,npm WARN 代码:'EPERM',npm WARN 系统调用:'scandir',npm WARN 路径:'C:\Users \.ra\AppData\Roaming\npm\node_modules\p hantomjs\node_modules\dashdash\node_modules' } npm 错误!代码 ELIFECYCLE npm 错误!errno 1 npm 错误!phantomjs@2.1.7 安装:node install.jsnpm 错误!退出状态 1 npm ERR!npm 错误!phantomjs@2.1.7 安装脚本失败。npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。`

我应该怎么办?

4

2 回答 2

1

最简单的安装方法是

  1. 安装NodeJS
  2. 使用 Node 的包管理器安装 phantomjs:npm -g install phantomjs-prebuilt

安装后,您可以像使用 phantom 一样简单:

driver = webdriver.PhantomJS() # or add to your PATH
driver.set_window_size(1024, 768) # optional
driver.get('https://google.com/')
driver.save_screenshot('screen.png') # save a screenshot to disk
sbtn = driver.find_element_by_css_selector('button.gbqfba')
sbtn.click()

如果您的系统路径环境变量设置不正确,您需要指定确切的路径作为webdriver.PhantomJS(). 替换这个:

driver = webdriver.PhantomJS() # or add to your PATH

...具有以下内容:

driver = webdriver.PhantomJS(executable_path='/usr/local/lib/node_modules/phantomjs/lib/phantom/bin/phantomjs')

参考:

于 2020-05-27T04:38:16.267 回答
0

尝试运行npm install phantomjs-prebuilt

phantomjs名称在 Pre-2.0 版本发布时更改为phantomjs-prebuilt 。

来源:查看此链接以了解更名的详细说明。

于 2018-05-25T07:53:00.187 回答