javascript - 如何在 Amazon Linux AMI 上运行端到端测试?

标签 javascript angularjs selenium-webdriver phantomjs protractor

我正在使用 Protractor 运行端到端测试,并且在 Ubuntu 上的 Chrome 和 Firefox 中一切运行良好。当我尝试使用 PhantomJS 运行测试时,它说无法找到元素。我正在使用 Angular v1.2.15。我的目标是在 Amazon Linux AMI 上运行测试,因此我要么必须让 PhantomJS 工作,要么安装 Chrome 或 Firefox,这看起来非常复杂。我了解到 PhantomJS 并不适合在 EC2 实例上进行测试,但是我应该使用哪种浏览器吗?这是我得到的错误和堆栈跟踪:

UnknownError: {"errorMessage":"Unable to find element with id 'username'","request":    {"headers":{"Accept":"application/json, image/png","Connection":"Keep-Alive","Content-    Length":"33","Content-Type":"application/json; charset=utf-    8","Host":"localhost:28418"},"httpVersion":"1.1","method":"POST","post":"    {\"using\":\"id\",\"value\":\"username\"}","url":"/element","urlParsed":    {"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/elem    ent","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"",    "source":"/element","queryKey":{},"chunks":    ["element"]},"urlOriginal":"/session/7e7e8860-cb0a-11e3-b0d0-117406720391/element"}}
Build info: version: '2.40.0', revision: 'fbe29a9', time: '2014-02-19 20:54:28'
System info: host: 'Brendan-Kirby-BN', ip: '127.0.1.1', os.name: 'Linux', os.arch:     'amd64', os.version: '3.11.0-18-generic', java.version: '1.7.0_51'
Driver info: driver.version: unknown
   Stacktrace:
     Error
    at null.<anonymous> (/home/brendankirby/ads/apps/client/test/ads-login-spec.js:4:3)
    at Object.<anonymous> (/home/brendankirby/ads/apps/client/test/ads-login-spec.js:3:1)
At async task:
      UnknownError: {"errorMessage":"Unable to find element with id         'username'","request":{"headers":{"Accept":"application/json, image/png","Connection":"Keep-    Alive","Content-Length":"33","Content-Type":"application/json; charset=utf-    8","Host":"localhost:28418"},"httpVersion":"1.1","method":"POST","post":"    {\"using\":\"id\",\"value\":\"username\"}","url":"/element","urlParsed":    {"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/elem    ent","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"",    "source":"/element","queryKey":{},"chunks":    ["element"]},"urlOriginal":"/session/7e7e8860-cb0a-11e3-b0d0-117406720391/element"}}
Build info: version: '2.40.0', revision: 'fbe29a9', time: '2014-02-19 20:54:28'
System info: host: 'Brendan-Kirby-BN', ip: '127.0.1.1', os.name: 'Linux', os.arch:     'amd64', os.version: '3.11.0-18-generic', java.version: '1.7.0_51'
Driver info: driver.version: unknown
==== async task ====
WebDriver.findElement(By.id("username"))
    at Protractor.findElement     (/usr/lib/node_modules/protractor/lib/protractor.js:748:25)
    at Object.elementFinder.(anonymous function) [as sendKeys]     (/usr/lib/node_modules/protractor/lib/protractor.js:103:24)
    at null.<anonymous> (/home/brendankirby/ads/apps/client/test/ads-login-spec.js:9:32)

这是 phantomjs 日志:

[INFO  - 2014-04-23T17:12:47.902Z] GhostDriver - Main - running on port 28418
[INFO  - 2014-04-23T17:12:48.363Z] Session [7e7e8860-cb0a-11e3-b0d0-117406720391] -    page.settings -     {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true    ,"javascriptEnabled":true,"loadImages":true,"localToRemoteUrlAccessEnabled":false,"userAgent    ":"Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko)         PhantomJS/1.9.7 Safari/534.34","webSecurityEnabled":true}
[INFO  - 2014-04-23T17:12:48.363Z] Session [7e7e8860-cb0a-11e3-b0d0-117406720391] -     page.customHeaders:  - {}
[INFO  - 2014-04-23T17:12:48.363Z] Session [7e7e8860-cb0a-11e3-b0d0-117406720391] -     Session.negotiatedCapabilities -     {"browserName":"phantomjs","version":"1.9.7","driverName":"ghostdriver","driverVersion":"1.1    .0","platform":"linux-unknown-    64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnable    d":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEn    abled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptS    slCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"}}
[INFO  - 2014-04-23T17:12:48.364Z] SessionManagerReqHand - _postNewSessionCommand - New     Session Created: 7e7e8860-cb0a-11e3-b0d0-117406720391
[ERROR - 2014-04-23T17:12:50.308Z] Session [7e7e8860-cb0a-11e3-b0d0-117406720391] -     page.onError - msg: SyntaxError: Parse error
[ERROR - 2014-04-23T17:12:50.308Z] Session [7e7e8860-cb0a-11e3-b0d0-117406720391] -     page.onError - stack:
[ERROR - 2014-04-23T17:12:50.314Z] Session [7e7e8860-cb0a-11e3-b0d0-117406720391] -     page.onError - msg: ReferenceError: Can't find variable: angular
[ERROR - 2014-04-23T17:12:50.314Z] Session [7e7e8860-cb0a-11e3-b0d0-117406720391] -     page.onError - stack:
  (anonymous function) (http://ads-qa.bnservers.com/scripts/a267e5f1.scripts.js:1)
[ERROR - 2014-04-23T17:12:50.686Z] WebElementLocator - _handleLocateCommand - Element(s)     NOT Found: GAVE UP. Search Stop Time: 1398273170644
[INFO  - 2014-04-23T17:12:52.211Z] ShutdownReqHand - _handle - About to shutdown

最佳答案

我在云中使用 headless selenium服务器,即使没有真正的DISPLAY,它也提供Chrome和Firefox。我刚刚将配置文件移至此处:https://github.com/elgalu/headless

关于javascript - 如何在 Amazon Linux AMI 上运行端到端测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23252390/

相关文章:

javascript - ImpactJS 和 MelonJS 之间的主要区别是什么?

javascript - angular.fromJson(data.Body) 与 JSON.parse(data.Body)

java - 如何使用 Selenium WebDriver 处理动态文本(成功和失败文本)

javascript - jQuery把一系列div标签做成一个无序列表

javascript - Chart.js 传递值数据动态

c# - 下拉列表中的国家/地区和城市列表

javascript - 禁用 AngularJS 中的提交按钮

javascript - 调用成功时如何从 Angular 2中的http调用返回数据

android - "Appdriver"类似于 Android 应用的 Webdriver

c# - Selenium 通过 XPath 获取元素