Javascript 单击元素,直到使用isDisplayed显示另一个元素
我想单击“上一步”按钮,直到进入应用程序中的特定页面(我的Javascript 单击元素,直到使用isDisplayed显示另一个元素,javascript,angularjs,selenium-webdriver,promise,protractor,Javascript,Angularjs,Selenium Webdriver,Promise,Protractor,我想单击“上一步”按钮,直到进入应用程序中的特定页面(我的expectedElement所在页面)。这似乎不起作用 它失败,因为它找不到预期的元素 function navigateBack() { var backButton = $('div.back'); var expectedElement = $('span.some-specific-class'); backButton.click().then(function () { if (ex
expectedElement
所在页面)。这似乎不起作用
它失败,因为它找不到预期的元素
function navigateBack() {
var backButton = $('div.back');
var expectedElement = $('span.some-specific-class');
backButton.click().then(function () {
if (expectedElement.isDisplayed()) {
expectedElement.click();
} else {
navigateBack();
}
});
}
我对isDisplayed()
做了一点修改,在上面使用了一个promise。在对缺少的元素调用isDisplayed()
时,量角器将抛出错误
var expectedElement = $('span.some-specific-class');
expectedElement.isDisplayed().then(function(isDisplayed) {
if(isDisplayed)
console.log('isDisplayed');
});
所以,除非这是无效语法,否则如果量角器调用
isPresent()
/isDisplayed()
?!,将引发错误,如何检查元素是否存在或显示 像这样的东西对你有用吗
function navigateBack() {
var EC = protractor.ExpectedConditions;
var isVisible = EC.visibilityOf(expectedElement);
var backButton = $('div.back');
var expectedElement = $('span.some-specific-class');
backButton.click().then(function () {
browser.wait(isVisible, 5000, "failed to wait for element").then(function(result) {
if(result){
expectedElement.click();
} else {
navigateBack();
}
});
});
}由isDisplayed()引发的
:
我试过了,但我不相信
浏览器。等等
对我有用吗?我真的不需要在页面上等待元素出现。我在页面之间导航,我认为量角器自己会处理这个问题。是的,我想我不得不经常使用等待的原因是b/c我正在测试的应用程序不是一个角度应用程序,所以我必须利用预期的条件。
function navigateBack() {
var backButton = $('div.back');
var expectedElement = $('span.some-specific-class');
backButton.click().then(function () {
expectedElement.isDisplayed().then(function (isDisplayed) {
if (isDisplayed) {
expectedElement.click();
} else {
navigateBack();
}
}, function (err) {
});
});
}