我尝试通过以下代码对 toast 通知执行期望(请参阅最新的代码块):
describe('vCita Frontage - Conversation test cases', function() {
var EC = protractor.ExpectedConditions;
var currentPage = element(by.css('div.bubble-content'));
var toast = ($("md-toast.announce.ng-scope.md-default-theme.md-bottom.d-left"));
it('vCita New App - Conversation - Reply to existing conversation - Typing message', function() {
browser.driver.sleep(10000);
currentPage.isPresent().then(function (isVisible) {
if (isVisible) {
waitPageToLoad();
browser.wait(EC.visibilityOf(element(by.css('div.bubble-content'))), 30000);
} else {
browser.get('https://app.vcita.com/conversations/4oovfipphhfvvbpz');
waitPageToLoad();
browser.wait(EC.visibilityOf(element(by.css('div.bubble-content'))), 30000);
}
});
element(by.model('replyModel.text')).click().then(function() {
element(by.model('replyModel.text')).sendKeys("Hello!\nHow are you?\nI'm fine thanks.\nPlease contact with me.");
});
browser.waitForAngular();
});
it('vCita New App - Conversation - Reply to existing conversation - Message sent', function() {
element(by.css('button.green-btn.font-xs.md-button.ng-scope.md-default-theme')).click();
browser.waitForAngular();
});
it('vCita New App - Conversation - Follow up', function() {
element(by.css("button.font-xs.md-button.ng-scope.md-default-theme.gray-btn")).click();
browser.waitForAngular();
});
it('vCita New App - Conversation - Follow up - Just mark for follow-up - No reminder', function() {
var arr = [];
for(var i = 0; i < 1000000; i++){
arr.push(Math.random());
};
element(by.css('md-radio-button[value="no_reminder"]')).click();
browser.waitForAngular();
element(by.css('button[ng-click="send()"]')).click();
browser.waitForAngular();
browser.ignoreSynchronization = true;
browser.wait(function() {
return $(toast).isDisplayed();
}, 20000);
// expect(toast.getText()).toContain('The card was declined.');
browser.waitForAngular();
browser.ignoreSynchronization = false;
});
Webdriver 控制台收到的错误是:
RangeError: Maximum call stack size exceeded
堆栈跟踪:
RangeError: Maximum call stack size exceeded
at Function.childCtor.base (C:\Users\idan\AppData\Roaming\npm\node_modules\p
rotractor\node_modules\selenium-webdriver\lib\goog\base.js:2163:38)
at promise.Callback_.goog.defineClass.constructor (C:\Users\idan\AppData\Roa
ming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\p
romise.js:2431:23)
at new wrappedCtr (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor
\node_modules\selenium-webdriver\lib\goog\base.js:2366:26)
at promise.Promise.addCallback_ (C:\Users\idan\AppData\Roaming\npm\node_modu
les\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:641:12)
at promise.Promise.then (C:\Users\idan\AppData\Roaming\npm\node_modules\prot
ractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:591:15)
at Object.promise.asap (C:\Users\idan\AppData\Roaming\npm\node_modules\protr
actor\node_modules\selenium-webdriver\lib\webdriver\promise.js:911:11)
at C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\node_modules\se
lenium-webdriver\lib\webdriver\webdriver.js:250:27
at forEachKey (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\nod
e_modules\selenium-webdriver\lib\webdriver\webdriver.js:241:9)
at convertKeys (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\no
de_modules\selenium-webdriver\lib\webdriver\webdriver.js:245:5)
at convertValue (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\n
ode_modules\selenium-webdriver\lib\webdriver\webdriver.js:197:16)
Error
at [object Object].ElementArrayFinder.applyAction_ (C:\Users\idan\AppData\Ro
aming\npm\node_modules\protractor\lib\element.js:403:21)
at [object Object].self.(anonymous function) [as isDisplayed] (C:\Users\idan
\AppData\Roaming\npm\node_modules\protractor\lib\element.js:76:19)
at [object Object].self.(anonymous function) [as isDisplayed] (C:\Users\idan
\AppData\Roaming\npm\node_modules\protractor\lib\element.js:733:11)
at C:\automation\tests\testCases\newApp\conversationTC.js:48:25
at C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\node_modules\se
lenium-webdriver\lib\webdriver\webdriver.js:718:12
at [object Object].promise.ControlFlow.runInFrame_ (C:\Users\idan\AppData\Ro
aming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\
promise.js:1877:20)
at [object Object].promise.ControlFlow.runEventLoop_ (C:\Users\idan\AppData\
Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdrive
r\promise.js:1755:8)
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2056:12)
at goog.async.run.processWorkQueue (C:\Users\idan\AppData\Roaming\npm\node_m
odules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
at runMicrotasksCallback (node.js:337:7)
From: Task: <anonymous>
at pollCondition (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\
node_modules\selenium-webdriver\lib\webdriver\promise.js:1625:14)
at C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\node_modules\se
lenium-webdriver\lib\webdriver\promise.js:1621:7
at new promise.Promise (C:\Users\idan\AppData\Roaming\npm\node_modules\protr
actor\node_modules\selenium-webdriver\lib\webdriver\promise.js:355:5)
at C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\node_modules\se
lenium-webdriver\lib\webdriver\promise.js:1619:12
at [object Object].promise.ControlFlow.runInFrame_ (C:\Users\idan\AppData\Ro
aming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\
promise.js:1877:20)
at [object Object].promise.ControlFlow.runEventLoop_ (C:\Users\idan\AppData\
Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdrive
r\promise.js:1755:8)
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2056:12)
at goog.async.run.processWorkQueue (C:\Users\idan\AppData\Roaming\npm\node_m
odules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
at runMicrotasksCallback (node.js:337:7)
at process._tickCallback (node.js:355:11)
From: Task: <anonymous wait>
at [object Object].promise.ControlFlow.wait (C:\Users\idan\AppData\Roaming\n
pm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise
.js:1617:15)
at [object Object].webdriver.WebDriver.wait (C:\Users\idan\AppData\Roaming\n
pm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriv
er.js:714:21)
at [object Object].to.(anonymous function) [as wait] (C:\Users\idan\AppData\
Roaming\npm\node_modules\protractor\lib\protractor.js:63:25)
at [object Object].<anonymous> (C:\automation\tests\testCases\newApp\convers
ationTC.js:47:15)
at C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\node_modules\ja
sminewd\index.js:94:14
at [object Object].promise.ControlFlow.runInFrame_ (C:\Users\idan\AppData\Ro
aming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\
promise.js:1877:20)
at [object Object].promise.ControlFlow.runEventLoop_ (C:\Users\idan\AppData\
Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdrive
r\promise.js:1755:8)
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2056:12)
at goog.async.run.processWorkQueue (C:\Users\idan\AppData\Roaming\npm\node_m
odules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
at runMicrotasksCallback (node.js:337:7)
From: Task: Asynchronous test function: it()
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\node_modules\jasminewd\index.js:93:33)
at [object Object].<anonymous> (C:\Users\idan\AppData\Roaming\npm\node_modul
es\protractor\node_modules\minijasminenode\lib\async-callback.js:45:37)
at [object Object].jasmine.Block.execute (C:\Users\idan\AppData\Roaming\npm\
node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:1174:1
7)
at [object Object].jasmine.Queue.next_ (C:\Users\idan\AppData\Roaming\npm\no
de_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31)
at [object Object].jasmine.Queue.start (C:\Users\idan\AppData\Roaming\npm\no
de_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2162:8)
at [object Object].jasmine.Spec.execute (C:\Users\idan\AppData\Roaming\npm\n
ode_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2503:14
)
at [object Object].jasmine.Queue.next_ (C:\Users\idan\AppData\Roaming\npm\no
de_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31)
at onComplete (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\nod
e_modules\minijasminenode\lib\jasmine-1.3.1.js:2205:18)
at [object Object].jasmine.Spec.finish (C:\Users\idan\AppData\Roaming\npm\no
de_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2477:5)
at [object Object].onComplete (C:\Users\idan\AppData\Roaming\npm\node_module
s\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2504:10)==== asyn
c task ====
Error
at [object Object].<anonymous> (C:\automation\tests\testCases\newApp\convers
ationTC.js:36:4)
at [object Object].jasmine.Env.describe_ (C:\Users\idan\AppData\Roaming\npm\
node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:913:21
)
at [object Object].jasmine.Env.describe (C:\Users\idan\AppData\Roaming\npm\n
ode_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:898:15)
at describe (C:\Users\idan\AppData\Roaming\npm\node_modules\protractor\node_
modules\minijasminenode\lib\jasmine-1.3.1.js:658:27)
at Object.<anonymous> (C:\automation\tests\testCases\newApp\conversationTC.j
s:1:63)
技术信息:
Node JS(最新)
Selenium 网络驱动程序 2.44
Jasmine JS
Protractor (最新)
最佳答案
首先,您可以使用 browser.waitForAngular();
等待所有 Promise 的解析和计算,而不是运行 browser.driver.sleep(...);
,这可能不会按您的预期运行。
那么你就不能在脚本中使用 jQuery 选择器,因此应该坚持使用 Protractor 选择器,将你的 toast 变量替换为:
var toast = element(by.css('md-toast.announce.ng-scope.md-default-theme.md-bottom.d-left');
//and later use it like
browser.wait(toast.isPresent);
您可以阅读有关该主题的更多信息 here .
关于angularjs - Protractor - 由于有关 “RangeError: Maximum call stack size exceeded” 的错误,无法期待 Toast 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33460561/