我有这样的代码:
element(by.model("roleSelection.role")).element(by.cssContainingText('option', newRole)).click();//.then(function() {console.log('role click')})//;
通过调用服务器加载选项。
我可以通过这样做等待第一个元素
browser.wait(function() {
return browser.isElementPresent(by.model("roleSelection.role")).then(function(present){
return present;
});}, 8000);
它似乎有效。但是我怎么能等到“子元素”可以点击。 我试过这个
browser.wait(function() {
return browser.isElementPresent(by.model("roleSelection.role")).then(function(present){
if (present) {
var elm = element(by.model("roleSelection.role"));
return elm.isElementPresent(by.cssContainingText('option', newRole)).then(function(subpresent) {
return subpresent;
});
}
}); }, 8000);
答案 0 :(得分:0)
好吧,试试这个:https://angular.github.io/protractor/#/api?view=ExpectedConditions.prototype.elementToBeClickable
但是,请记住,量角器适用于有角度的网页和交互,以及动画。例如ng-animate。因此,它不确定如jquery或其他动画。
这样:
onPrepare: function () {
// disable animations when testing to speed things up
var disableNgAnimate = function () {
angular.module('disableNgAnimate', []).run(function ($animate) {
$animate.enabled(false);
});
};
browser.addMockModule('disableNgAnimate', disableNgAnimate);
}
或者您可以在browser.executeScript()
中切换脚本方式。
请参阅此link。它只适用于jquery动画。
如果您没有动画问题。使用setTimeout()
JS函数。
答案 1 :(得分:0)
你尝试过点击吗?沿着这些方向的东西
var EC = protractor.ExpectedConditions;
var select = element(by.model("roleSelection.role"))
var isClickable = EC.elementToBeClickable(select);
browser.wait(isClickable,5000); //now options should have been loaded by now