node.js - 带有 UI 的 Docker 中的 Selenium 测试执行

标签 node.js selenium docker selenium-webdriver automation

我尝试在 docker 机器上运行 selenium 测试(Node Js),但它显示“TypeError: module.exports.browser.isElementPresent is not a function”。

笔记:

  • 我可以在本地机器上成功运行同样的 Selenium 测试
  • 我尝试在 docker 上运行相同的测试,然后我遇到了上面的错误

  • root@6cd7ab2eb6f7:/usr/src# npm run kongaezv2
    npm info it worked if it ends with ok
    npm info using npm@4.1.2
    npm info using node@v7.6.0
    npm info lifecycle cerebro@0.0.1~prekongaezv2: cerebro@0.0.1
    npm info lifecycle cerebro@0.0.1~kongaezv2: cerebro@0.0.1
    
    > cerebro@0.0.1 kongaezv2 /usr/src
    > mocha --recursive tests/kongaezv2 -t 9000000 --reporter mochawesome
    
    execFile: tests/kongaezv2
    execFilename: tests/kongaezv2.json
    
    
      Konga EZ V2 Sanity Test
    validating pagetitle
    title = Konga Ez | Home
    Title = Konga Ez | Home
    Validation == PASS :: Page :Konga Ez | Home is displayed successfully
        1) Log in with Email and Password
    ready to close browser
    validating pagetitle
    title = Konga Ez | Home
    Title = Konga Ez | Home
    Validation == PASS :: Page :Konga Ez | Home is displayed successfully
        2) Serach for an item
    ready to close browser
    validating pagetitle
    title = Konga Ez | Home
    Title = Konga Ez | Home
    Validation == PASS :: Page :Konga Ez | Home is displayed successfully
        3) Add an item to cart
    ready to close browser
    validating pagetitle
    title = Konga Ez | Home
    Title = Konga Ez | Home
    Validation == PASS :: Page :Konga Ez | Home is displayed successfully
        4) Checkout with POD
    ready to close browser
    
    
      0 passing (48s)
      4 failing
    
      1) Konga EZ V2 Sanity Test Log in with Email and Password:
         TypeError: module.exports.browser.isElementPresent is not a function
          at Object.elementpresent (helpers.js:25:47)
          at Object.validateelementpresent (validations.js:57:13)
          at Object.clickbutton (actions.js:74:13)
          at frameworks/kongaezv2.js:67:19
          at node_modules/async/dist/async.js:3830:24
          at replenish (node_modules/async/dist/async.js:946:17)
          at node_modules/async/dist/async.js:950:9
          at eachOfLimit (node_modules/async/dist/async.js:975:24)
          at node_modules/async/dist/async.js:980:16
          at _parallel (node_modules/async/dist/async.js:3829:5)
          at Object.series (node_modules/async/dist/async.js:4684:5)
          at Object.login_with_email (frameworks/kongaezv2.js:65:15)
          at Context.<anonymous> (tests/kongaezv2/kongaezv2.js:20:19)
          at runTest (node_modules/selenium-webdriver/testing/index.js:164:22)
          at node_modules/selenium-webdriver/testing/index.js:185:16
          at new ManagedPromise (node_modules/selenium-webdriver/lib/promise.js:1085
    :7)
          at controlFlowExecute (node_modules/selenium-webdriver/testing/index.js:18
    4:14)
          at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:3092
    :14)
          at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:
    3075:27)
          at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2982:25)
          at node_modules/selenium-webdriver/lib/promise.js:676:7
          at process._tickCallback (internal/process/next_tick.js:103:7)
      From: Task: Konga EZ V2 Sanity Test Log in with Email and Password
          at Context.ret (node_modules/selenium-webdriver/testing/index.js:183:10)
          at node_modules/selenium-webdriver/testing/index.js:102:5
          at ManagedPromise.invokeCallback_ (node_modules/selenium-webdriver/lib/pro
    mise.js:1384:14)
          at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:3092
    :14)
          at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:
    3075:27)
          at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2935:27)
          at node_modules/selenium-webdriver/lib/promise.js:676:7
          at process._tickCallback (internal/process/next_tick.js:103:7)
    
      2) Konga EZ V2 Sanity Test Serach for an item:
         TypeError: module.exports.browser.isElementPresent is not a function
          at Object.elementpresent (helpers.js:25:47)
          at Object.validateelementpresent (validations.js:57:13)
          at Object.sendkeys (actions.js:116:13)
          at frameworks/kongaezv2.js:104:19
          at node_modules/async/dist/async.js:3830:24
          at replenish (node_modules/async/dist/async.js:946:17)
          at node_modules/async/dist/async.js:950:9
          at eachOfLimit (node_modules/async/dist/async.js:975:24)
          at node_modules/async/dist/async.js:980:16
          at _parallel (node_modules/async/dist/async.js:3829:5)
          at Object.series (node_modules/async/dist/async.js:4684:5)
          at Object.search (frameworks/kongaezv2.js:98:15)
    

    最佳答案

    你应该安装Xvfb更多信息在这里here

    关于node.js - 带有 UI 的 Docker 中的 Selenium 测试执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974869/

    相关文章:

    docker - Dockerfile RUN命令

    javascript - 尝试将表单元素保存到 mongoDB 时无法读取未定义错误的属性

    node.js - 运行时获取意外 token

    javascript - 存在 Express session 问题的 Node

    javascript - 如何通过 Selenium 的 onclick 属性定位 javascript 元素?

    java - 无法在边缘 webDriver 上运行我的 Selenium 测试

    docker - 使用容器名称而不是容器ID保存Docker容器日志

    arrays - 我如何在 Mongoose 中查询以获得 "answers"数组,其中 'objective'数组内的 'answers'是 "Awareness"

    python - selenium.common.exceptions.SessionNotCreatedException : Message: Unable to find a matching set of capabilities with GeckoDriver, Selenium 和 Firefox

    docker - 是否可以将 DNS 名称链接到 docker 中的另一个 DNS 名称?