如何在单个实习测试中测试多个页面

时间:2013-12-02 14:53:02

标签: intern

单个功能测试是否可以处理2个不同的页面?例如,当我执行以下测试时:

    return this.remote
           .get(testPage)
           .waitForElementByCssSelector('.alfresco-core-Page.allWidgetsProcessed', 5000)
           .elementByCss('#UNIT_TEST_MODEL_FIELD>DIV.control>TEXTAREA')
              .type(testData)
              .end()
           .elementByCss("#LOAD_TEST_BUTTON")
              .click()
              .sleep(2000)
              .waitForElementByCssSelector('.alfresco-core-Page.allWidgetsProcessed', 5000)
                 .elementByCss("#DD1") 
                 .click()
                 .end();

我收到以下错误:

Test main - firstTest - Test1 FAILED on chrome 31.0.1650.57 on LINUX:
Error: Cannot call method 'apply' of undefined
TypeError: Cannot call method 'apply' of undefined at null.<anonymous>     (/home/dave/ScratchPad/ShareInternTests/node_modules/intern/lib/util.js:108:10)
    at /home/dave/ScratchPad/ShareInternTests/node_modules/intern/lib/wd.js:769:29
    at signalListener     (/home/dave/ScratchPad/ShareInternTests/node_modules/intern/node_modules/dojo/Deferred.js:37    :21)
    at signalWaiting     (/home/dave/ScratchPad/ShareInternTests/node_modules/intern/node_modules/dojo/Deferred.js:28    :4)
    at resolve     (/home/dave/ScratchPad/ShareInternTests/node_modules/intern/node_modules/dojo/Deferred.js:19    2:5)
    at signalDeferred     (/home/dave/ScratchPad/ShareInternTests/node_modules/intern/node_modules/dojo/Deferred.js:81    :15)
    at signalListener     (/home/dave/ScratchPad/ShareInternTests/node_modules/intern/node_modules/dojo/Deferred.js:52    :6)
    at signalWaiting     (/home/dave/ScratchPad/ShareInternTests/node_modules/intern/node_modules/dojo/Deferred.js:28    :4)
    at resolve     (/home/dave/ScratchPad/ShareInternTests/node_modules/intern/node_modules/dojo/Deferred.js:19    2:5)
    at signalDeferred     (/home/dave/ScratchPad/ShareInternTests/node_modules/intern/node_modules/dojo/Deferred.js:81    :15)

由于我正在测试的框架,我需要加载一个“bootstrap”测试页面,我将测试数据写入其中然后POST它以将测试模型持久存储到HTTP会话中,然后在结果页面中呈现

然而,虽然测试的第一部分工作正常(我看到输入的测试数据并且提交了下一页,但我似乎在第二次.waitForElementByCssSelector调用时得到错误。我尝试了各种排列,但可以'让这个工作。

如果我在第二页上运行完全第二次测试,那么这样可以正常工作,但理想情况下我希望在一次测试中捕获它。

我想做的是什么,还是我必须把它分成单独的测试?

1 个答案:

答案 0 :(得分:0)

请尝试使用setImplicitWaitTimeout并使用elementBy*方法,而不是使用waitForElementByCssSelector。它效率更高,而且应该正常工作。

第二个选项是确保在第二次end来电之前致电waitForElementByCssSelector;看起来调用waitForElement方法的方式有defect,其中#LOAD_TEST_BUTTON元素被用作调用的上下文,但waitForElement不接受上下文