我正在尝试在页面对象中使用WebdriverJS wait()方法,以确保每次访问元素时,Webdriver都会等到它出现。目前,我的代码“看起来”是正确的,但是一旦从wait()返回,它就不会让我点击该元素。根据我所做的研究,看起来已经有其他人能够成功地做到这一点,但到目前为止我还没有弄明白。
我收到错误:TypeError:undefined不是函数 - 在element.click()
我的Page Object中的方法:
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');
答案 0 :(得分:2)
量角器在2.0中发生了重大变化,导致这种可用性测试方法失败。新的热点是ExpectedConditions。以下是我处理你案件的方法......
如果您有一个basePage(如果不只是页面),请设置您的预期条件(我将它们重命名为更有用):
\x{2}
我还使用了通用var EC = protractor.ExpectedConditions;
this.isClickable = function(locator) {
return EC.elementToBeClickable(locator);
};
呃,这是我们在这里讨论的内容。
waitAndClick
然后在页面对象中处理您的具体案例。
this.waitAndClick = function(element) {
browser.wait(this.isClickable(element), 5000).then(function() {
element.click();
});
};
以同样的方式调用它......
FacilityPage.prototype.selectFacility = function (facilityName) {
this.waitAndClick(element(by.linkText(facilityName)));
};