量角器本地和全球安装行为不同
Posted
技术标签:
【中文标题】量角器本地和全球安装行为不同【英文标题】:Protractor local and global installations behaving differently 【发布时间】:2016-06-18 10:11:49 【问题描述】:这是一个粗略的。我和两位开发人员已经为此工作了近 24 小时。我有一个 conf.js,我可以在终端中导航到,然后运行 protractor conf.js
(使用全局安装的副本),它运行完美。一次一个,每次测试成功后都会出现一个绿点,大约需要80秒。这就是棘手的地方。
如果我通过执行(path of project)/node_modules/protractor/bin/protractor conf.js
来强制运行 Protractor 的本地安装,那么它会启动,同时显示几个绿点,然后抛出一个关于无法连接到 Angular 的错误。这给与我们的构建集成带来了麻烦,因为 grunt 会查找并使用 Protractor 的本地副本。
更复杂的是,另外两个开发人员之一可以拉下我的 repo 并在我的 conf.js 上运行本地量角器安装,没问题。 100% 有效。
Error while waiting for Protractor to sync with the page: "window.angular is
undefined. This could be either because this is a non-angular page or because your
test involves client-side navigation, which can interfere with Protractor's
bootstrapping. See http://git.io/v4gXM for details"
我们已经检查了以下所有内容:
Protractor 的本地安装和全局安装都是同一个版本,都是用 npm 安装的。
Richards-MacBook-Pro:protractor richardpressler$ npm ls protractor
wear-test-web-framework@0.0.1
/path_to_project/wear-test-track0
└── protractor@3.1.1
Richards-MacBook-Pro:protractor richardpressler$ npm ls -g protractor
/usr/local/lib
└── protractor@3.1.1
Selenium 是最新的。我们同时运行 (path to project)/node_modules/protractor/bin/webdriver-manager update
和 webdriver-manager update
来更新本地和全局 selenium 服务器安装
我尝试单独启动 Selenium,然后将 Protractor 指向它,以便我可以看到输出,当我使用全局量角器 (protractor conf.js
) 运行 conf.js 时,它看起来很棒,显示了几个[Executing] 语句,每个语句后跟一个 [Done] 语句。但是,当我使用(path to project)/node_modules/protractor/bin/protractor conf.js
运行本地量角器二进制文件时,我看到量角器能够连接到 Selenium 实例,但没有做太多后续操作:
当量角器输出如下:
Richards-MacBook-Pro:protractor richardpressler$ ../../node_modules/protractor/bin/protractor conf.js
Using the selenium server at http://127.0.0.1:4444/wd/hub
[launcher] Running 1 instances of WebDriver
Started
.......................
Selenium 服务器只输出这个:
10:35:47.612 INFO - Selenium Server is up and running
10:35:49.479 INFO - Executing: [new session: Capabilities [count=1, browserName=chrome]])
10:35:49.487 INFO - Creating a new session for Capabilities [count=1, browserName=chrome]
Starting ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) on port 34848
Only local connections are allowed.
10:35:50.516 INFO - Done: [new session: Capabilities [count=1, browserName=chrome]]
10:35:50.532 INFO - Executing: [set script timeout: 11000])
10:35:50.537 INFO - Done: [set script timeout: 11000]
在比较项目中的全局、命令行版本和本地安装的版本时,是否有人遇到过 Protractor 类似的不当行为?
谢谢
【问题讨论】:
【参考方案1】:原来 protractor、grunt、selenium 等的所有依赖项都在 devDependencies
中,所以当我最初运行 npm install
时,它根本没有安装这些包的所有子依赖项。如果我将它们移动到 package.json 中的dependencies
,然后重新运行npm install
,它就像一个魅力。或者,使用 devDependencies
中的这些依赖项运行 npm install --dev
也可以正常工作。
更多关于dependencies
、devDependencies
和peerDependencies
之间区别的信息可以在这里找到:What's the difference between dependencies, devDependencies and peerDependencies in npm package.json file?
【讨论】:
以上是关于量角器本地和全球安装行为不同的主要内容,如果未能解决你的问题,请参考以下文章
使用和不使用 SSL 的 Apache 反向代理之间行为不同的原因
AngularJS 应用程序在本地和 Heroku 上有不同的行为