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