我正在尝试在我的一个Windows asp.net(mvc-> angular)项目上设置E2E测试。 我们使用团队城市来进行构建,因此我希望我的配置可以在我的盒子和构建盒上工作。
我一直试图在conf.js中设置值,以便量角器自动启动并在量角器需要时停止...
我通过这样的批处理文件运行它:
call npm install -g
call C:\Users\brown.ericw\AppData\Roaming\npm\protractor conf.js
pause
当我手动运行硒时,一切正常。
但我无法找出正确的conf.js来启动selenium并自动关闭(尽管有几种不同的方法,但在bat文件中停止它并不总是有效的。)
我尝试了很多不同的组合,但我很难过。
以下是我的conf.js的相关部分:
exports.config = {
seleniumjar: '.\node_modules\protractor\selenium\selenium-server-standalone-2.45.0.jar',
//seleniumArgs: '-Dwebdriver.chrome.driver="\node_modules\protractor\selenium\chromedriver',
//chromeDriver: '.\node_modules\protractor\selenium\chromedriver',
//chromeDriver: '.\node_modules\protractor\bin\webdriver-manager',
chromeDriver: 'C:\Users\Brown.ericw\AppData\Roaming\npm\node_modules\protractor\selenium\chromedriver',
//seleniumAddress: 'http://localhost:4444/wd/hub',
specs: [
'e2eTests/*.js'
],
我在我的项目文件夹下安装了量角器,所以我运行了npm install,所以我知道在构建/测试服务器运行开始时它都是kosher。
这是我得到的错误..很明显我无法弄清楚设置让它指向镀铬驱动程序......
d:\ TFS \ TACAdmin3G_Test_E2E>呼叫 C:\ Users \ brown.ericw \ AppData \ Roaming \ npm \ protra ctor conf.js [launcher]进程已退出,错误代码为1 C:\ Users \用户Brown.ericw \应用程序数据\漫游\ NPM \ node_modules \量角器\ node_modules \ q \ q.js:126 扔掉; ^错误:在D:\ TFS \ TACAdmin3G \ node_modules \ protractor \ selenium \ chromedriver找不到chromedriver 在LocalDriverProvider.addDefaultBinaryLocs_(C:\ Users \ Brown.ericw \ AppData \ R oaming \ NPM \ node_modules \量角器\ lib中\ driverProviders \ local.js:54:15) 在LocalDriverProvider.setupEnv(C:\ Users \ Brown.ericw \ AppData \ Roaming \ npm \ no de_modules \量角器\ lib中\ driverProviders \ local.js:71:8) 在Runner.run(C:\ Users \ Brown.ericw \ AppData \ Roaming \ npm \ node_modules \ protrac TOR \ LIB \ runner.js:265:31) 在TaskRunner.run(C:\ Users \ Brown.ericw \ AppData \ Roaming \ npm \ node_modules \ pro 拖拉机\ lib中\ taskRunner.js:123:19) 在createNextTaskRunner(C:\ Users \ Brown.ericw \ AppData \ Roaming \ npm \ node_modul) ES \量角器\ lib中\ launcher.js:220:20) 在C:\ Users \ Brown.ericw \ AppData \ Roaming \ npm \ node_modules \ protractor \ lib \ laun cher.js:243:7 在_fulfilled(C:\ Users \ Brown.ericw \ AppData \ Roaming \ npm \ node_modules \ protrac TOR \ node_modules \ q \ q.js:797:54) at self.promiseDispatch.done(C:\ Users \ Brown.ericw \ AppData \ Roaming \ npm \ node_ 模块\量角器\ node_modules \ q \ q.js:826:30) 在Promise.promise.promiseDispatch(C:\ Users \ Brown.ericw \ AppData \ Roaming \ npm \ node_modules \量角器\ node_modules \ q \ q.js:759:13) 在C:\ Users \ Brown.ericw \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_mod ULES \ q \ q.js:573:44
我尝试更改斜线,因为路径中的空间已经变回正常路径:
Error: Could not find chromedriver at D:\TFS\TACAdmin3G\_Test_E2E\..
这并没有给我整条路径。
chromedriver.exe位于conf.js中各种注释版本的所有位置。但是他们每个人都没有喜悦。
我需要使用相对路径,因为我的框上的根文件夹与构建服务器上的根文件夹不同。
非常感谢任何帮助。
忘了说我看了这个:Protractor does not find chromedriver: The driver executable does not exist: 而这一个
how to close selenium webdriver at end of test?
并且无法弄清楚
答案 0 :(得分:2)
好的每个人,对于那些关注的人,这里是问题的答案,以及为什么我认为这是有效的。这个答案适用于我在VS中的node.js项目(也必须在这里添加软件包),在我的开发框中的批处理文件和团队城市中。
我将NPM INSTALL添加到我的构建脚本中,这样一旦代码被拉下来,它会立即将所有js包放在代码目录中。
然后我将selenium server stand lone包添加到我的项目(和package.json,所以我确切知道jar的位置。我将它添加为--Save(写入配置)和--Dev(添加)在dev部分,即包含在我的代码文件夹中的node_models中)
然后我在conf.js中有这个
select * from formsresponse fr, formsresponses frs
where fr.formsresponse_id = frs.formsresponse_id
and fr.form_submitdate >= '20150313' and fr.form_submitdate < '20150401'
有一些微妙但重要的变化。
/ vs \作为路径中的斜杠..这个是技巧,因为当我使用反斜杠时,它没有抱怨,唯一的区别是它在错误消息中用...截断了路径,但是当我在深入挖掘后,反斜杠会从您输入的路径部分中删除...甚至代码使用的部分基于。\具有反斜杠...所以只在conf.js中的这些标记中的路径中使用正斜杠< / p>
使用../node_modules vs。\ node_modules vs node_modules ...的相对路径,有一些示例,其中使用了所有这些,一旦我能够看到生成的完整路径,我发现../ wasn这就是我想要的......所以我玩它并让它与一个./和一个没有...为什么他们都没有合作./我不知道..但它的确有效。(对不起)那)
以防万一,这是我的package.json
> exports.config = {
> seleniumServerJar: 'node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-2.45.0.jar',
> chromeDriver: './node_modules/protractor/selenium/chromedriver',
> //seleniumAddress: 'http://localhost:4444/wd/hub',
答案 1 :(得分:1)
在构建服务器上运行真正的浏览器可能不是一个好的解决方案。如果您有一个专用的Teamcity节点,那么像PhantomJS这样的无头浏览器实现可能是一个选项。您需要确保专用节点上安装了PhantomJS,并且其可执行文件位于PATH中的某个位置。另外,请确保将浏览器名称设置为phantomjs而不是chrome。
其次,您可以设置Selenium网格并使用您要测试的不同浏览器设置节点。从构建服务器,您将在您选择的浏览器上运行远程selenium网格上的测试。如果你想走这条路,有付费的第三部分选项,如酱实验室或浏览器堆栈。
我倾向于使用第二个选项,因为PhantomJS不是真正的浏览器,您可能需要在不同的浏览器/平台等上测试您的应用程序。