单个功能测试是否可以处理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调用时得到错误。我尝试了各种排列,但可以'让这个工作。
如果我在第二页上运行完全第二次测试,那么这样可以正常工作,但理想情况下我希望在一次测试中捕获它。
我想做的是什么,还是我必须把它分成单独的测试?
答案 0 :(得分:0)
请尝试使用setImplicitWaitTimeout
并使用elementBy*
方法,而不是使用waitForElementByCssSelector
。它效率更高,而且应该正常工作。
第二个选项是确保在第二次end
来电之前致电waitForElementByCssSelector
;看起来调用waitForElement
方法的方式有defect,其中#LOAD_TEST_BUTTON
元素被用作调用的上下文,但waitForElement
不接受上下文