这是我的Block,其中包含element.element(by.model("$ctrl.benchmark.name"));
这不存在于Dom。它给出了错误,即元素不在页面上,但仍然执行在其后写入的所有代码行。我希望这个按顺序处理,如果上面通过然后转到下一个。如何在Protractor中处理这些类型的问题。
it("Test BenchMark",function(){
browser.getTitle().then(function (name) {
console.log(name);
browser.sleep(2000);
element(by.linkText("Manage Benchmarks")).click();
browser.sleep(4000)
//element(by.xpath("//main[@class='ng-scope']//a[text()='Create Benchmark']")).click();
console.log("megha");
element(by.model("$ctrl.benchmark.name")).sendKeys("bench");
element(by.buttonText("Save")).click();
console.log(megha);
element(by.xpath("//button[@class='dropdown-toggle']")).click();
console.log("dropdown clicked")
});
答案 0 :(得分:0)
您期望的行为将不会由Protractor处理,它将通过测试框架(例如:Jasmine)来处理。但
"Jasmine doesn't support failing early, in a single spec. The idea is to give
you all of the failures in case that helps figure out what is really wrong
in your spec"
答案 1 :(得分:0)
您可以将browser.wait()与Expected Conditions结合使用。
browser.wait()
阻止控制流程执行,直到解决了承诺,并且预期条件全部评估为承诺。
因此,在您的情况下,您可以使用presenceOf()和/或visibilityOf()。
var EC = protractor.ExpectedConditions;
var el = element(by.model("$ctrl.benchmark.name"));
var present = EC.presenceOf(el); // wait for it to be added to DOM
var visible = EC.visibilityOf(el); // wait for it to be visible on page
browser.wait(EC.and(present, visible), 10000); // wait maximum of 10 seconds
// rest of code