我试图添加“if”语句,如果在DOM中可以看到元素,请执行下面的代码,否则跳过“if”语句并继续运行下一个“it”块 .
有一个错误:
视图未在[object Object]中定义 .
请帮忙!
代码:
describe('LiveSite Portal - New client send new message', function() {
it('LiveSite - Home Page', function() {
liveSiteHome();
});
it('LiveSite - Logged out', function() {
var EC = protractor.ExpectedConditions;
browser.wait(EC.visibilityOf(element(by.binding('new_message'))), 10000);
var forgetMe = expect(element(by.name('new_message')).isPresent()).toBe(true);
if (forgetMe === true) {
element(by.css("a.forget-me ng-binding")).click();
browser.driver.sleep(5000);
}
else {
browser.driver.sleep(1000);
}
});
it('LiveSite - Click on leave a message', function() {
element(by.xpath("//div[@class='actions-row']//a[.='Leave Your Details']")).click();
browser.driver.sleep(3000);
expect(element(by.id("new_client_message_message")).isPresent()).toBe(true);
captureScreen("clientNewMessage");
browser.driver.sleep(3000);
});
});
这是应该可见的元素:
<div class="row form-control textarea-holder ng-isolate-scope" ng-show="client" vc-animate-active="sendMessageActive">
<textarea ng-attr-placeholder="{{"client_zone.navigation.write_your_message" | t}}" ng-attr-rows="{{(show_promotional_link && actions.length > 3)? 2 : 4}}" ng-model="new_message" vc-focus="sendMessageActive" class="ng-isolate-scope ng-pristine ng-valid" placeholder="Write a new message" rows="4"></textarea>
<div class="cf">
<button class="btn btn-account-action btn-with-font-icon icon-env live-button brand-theme ng-binding" ng-bind=""client_zone.navigation.reply" | t" ng-disabled="sending" type="submit">Send</button>
<input class="btn btn-void btn-default" ng-click="$state.go("main")" type="button" value="Cancel">
</div>
</div>
这是量角器的错误:
错误:等待超时10009ms后,在C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver \ promise.js:1630:20 at [object Object] .promise . [Object Object] .promise.Callback_中的.ControlFlow.runInFrame_(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver \ dev.js:1877:20) . [object object] .promise.Promise上的goog.defineClass.notify(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver \ dev.:sm:244:25)在Object.goog的Array.forEach(native)处的.notify(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver \ promise.js:563:12) . 在[object Object] .promise.Promise上的array.forEach(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ goog \ array \ array.js:203:43) .notifyAll(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-we goog.async.run.processWorkQueue(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ goog \)中的bdriver \ lib \ webdriver \ promise.js:552:16) async \ run.js:125:21)at processMicrotasksCallback(node.js:337:7)at process.tickCallback(node.js:355:11)From:Task:at [object Object] .promise.ControlFlow.wait( C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver \ dev.js:1617:15)at [object Object] .webdriver.WebDriver.wait(C:\用户\ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver \ webdriver.js:714:21)at [object Object] .to . (匿名函数)[as wait](C :\ users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ lib \ protractor.js:63:25)在[object Object] . (c:\ automation \ tests \ messageNewClient.js:11:13)在[object Object]的C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ jasminewd \ index.js:94:14 [object object] .promise上的.promise.ControlFlow.runInFrame(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver \ promise.js:1877:20) . 在[object Object]处的ControlFlow.runEventLoop(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver \ promise.js:1755:8) . goog.async.run.processWorkQueue(C:\ Users \)中的(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ webdriver \ promise.js:2056:12) idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ goog \ async \ run.js:125:21)at runMicrotasksCallback(node.js:337:7)From:Task:Asynchronous test function :[object object]的it() . (对象对象)上的(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ jasminewd \ index.js:93:33) . (对象对象) . (对象对象) . (j:\ n) \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ jasmine-1.3.1.js:1174:17)at [object Object] .jasmine.Queue.next_(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_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 \ node_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 \ node_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 \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ jasmine-1.3.1.js:2209:31)atComplete(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ minijasmin) enode \ lib \ jasmine-1.3.1.js:2205:18)at [object Object] .jasmine.Spec.finish(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ jasmine-1.3.1.js:2477:5)在[object Object] .onComplete(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ jasmine-1.3.1.js:2504:10)==== async task ==== [object]出错宾语] . (c:\ automation \ tests \ messageNewClient.js:7:3)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)在[object Object] .jasmine.Env.describe(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ jasmine- 1.3.1.js:898:15)描述(C:\ Users \ idan \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ minijasminenode \ lib \ jasmine-1.3.1.js:658:27)at Object . (C:\ automation \ tests \ messageNewClient.js:1:63)在Module的Object.Module._extensions..js(module.js:478:10)的Module._compile(module.js:460:26)处 . 在Function.Module._load上加载(module.js:355:32)(module.js:310:12)
3 回答
在继续测试规范流程之前,您需要让
protractor
知道您想要wait until the element becomes present,例如:如果您不想抛出错误消息,那么您可以使用失败的承诺来处理如下:
我有一个类似的问题,我解决了一些这样的问题,这可能会对你有所帮助::::