量角器本地和全球安装行为不同

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 updatewebdriver-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 也可以正常工作。

更多关于dependenciesdevDependenciespeerDependencies之间区别的信息可以在这里找到:What's the difference between dependencies, devDependencies and peerDependencies in npm package.json file?

【讨论】:

以上是关于量角器本地和全球安装行为不同的主要内容,如果未能解决你的问题,请参考以下文章

使用和不使用 SSL 的 Apache 反向代理之间行为不同的原因

AngularJS 应用程序在本地和 Heroku 上有不同的行为

package.json执行与量角器中的其他构建工具有什么不同以便执行?

全球第一批25个GPT模型开始自由生活

mysql 必知必会整理—全球化与本地化[十六]

Buildfire:确认控制面板和设备中的通知行为不同(并且失败)但在本地主机中有效