Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击元素,直到使用isDisplayed显示另一个元素_Javascript_Angularjs_Selenium Webdriver_Promise_Protractor - Fatal编程技术网

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) {

        });
    });
}