Javascript WebdriverJS wait()是否返回web元素?

Javascript WebdriverJS wait()是否返回web元素?,javascript,selenium-webdriver,protractor,Javascript,Selenium Webdriver,Protractor,我正在尝试在我的页面对象中使用WebdriverJS wait()方法,以确保每当我访问元素时,Webdriver都会等待它出现。目前,我拥有的代码“看起来”是正确的,但一旦元素从wait()返回,它就不允许我单击该元素。根据我所做的研究,似乎还有其他人能够成功地做到这一点,但到目前为止,我还没有弄清楚这一点 我得到了一个错误:TypeError:undefined不是一个function-on元素 我的页面对象中的方法: FacilityPage.prototype.selectFac

我正在尝试在我的页面对象中使用WebdriverJS wait()方法,以确保每当我访问元素时,Webdriver都会等待它出现。目前,我拥有的代码“看起来”是正确的,但一旦元素从wait()返回,它就不允许我单击该元素。根据我所做的研究,似乎还有其他人能够成功地做到这一点,但到目前为止,我还没有弄清楚这一点

我得到了一个错误:TypeError:undefined不是一个function-on元素

我的页面对象中的方法:

    FacilityPage.prototype.selectFacility = function (facilityName) {
    var self = this;
    this.driver.wait(function () {
        return self.driver.isElementPresent(by.linkText(facilityName)).then(function (elm) {
            console.log('This is elm: ', elm);
            return elm;
        });
    }, 10000).then(function (element) {
        element.click();
    });
};
facilityPage.selectFacility('Facility 1');
facilityPage.selectFacility('Facility 1');
如何从测试文件调用:

    FacilityPage.prototype.selectFacility = function (facilityName) {
    var self = this;
    this.driver.wait(function () {
        return self.driver.isElementPresent(by.linkText(facilityName)).then(function (elm) {
            console.log('This is elm: ', elm);
            return elm;
        });
    }, 10000).then(function (element) {
        element.click();
    });
};
facilityPage.selectFacility('Facility 1');
facilityPage.selectFacility('Facility 1');

量角器在2.0中有一个突破性的变化,它扼杀了这种可用性测试方式。新的高温是预期条件。我可以这样处理你的案子

如果您有一个基本页面(如果不仅仅是页面),请设置您的预期条件(我将它们重命名为更有用的名称):

我还使用了一个通用的
waitAndClick
er,这是我们在这里讨论的核心

this.waitAndClick = function(element) {
    browser.wait(this.isClickable(element), 5000).then(function() {
        element.click();
    });
};
然后在page对象中,处理您的特定情况

FacilityPage.prototype.selectFacility = function (facilityName) {
    this.waitAndClick(element(by.linkText(facilityName)));
};
也这么说吧