问题:在特定网页中,我想等待特定元素,然后对该元素执行操作。
使用的代码:
//Official webapp URL
browser.driver.get('http://ubet-feature-qa.opal.dnb.com');
// variable to get the particular element
var userNameDisplayedOnHomePageField = element(by.css('[ng-if="authSrv.getUserName()"]'));
//function to wait for the element and return the element availability
this.isLoggedIn = function(){
browser.driver.wait(protractor.until.elementIsVisible(userNameDisplayedOnHomePageField));
return userNameDisplayedOnHomePageField.isDisplayed();
};
预期结果 它应该返回元素可用性 true 或 false
实际结果 得到以下错误信息,不知道为什么会这样..
TypeError:WebElementCondition未解析为WebElement: [object Object]
答案 0 :(得分:4)
Selenium条件无法解析量角器ElementFinder
。
您可以使用protractor.ExpectedConditions
代替protractor.until
条件:
var EC = protractor.ExpectedConditions;
var button = element(by.css("..."));
browser.wait(EC.visibilityOf(button), 1000);
button.click();
您还可以使用具有Selenium条件的Selenium元素:
var until = protractor.until;
var button = browser.findElement(by.css("..."));
browser.wait(until.elementIsVisible(button), 1000).then(function(button){
button.click();
});
另一种方法是从WebElement
获取ElementFinder
:
var until = protractor.until;
var button = element(by.css("..."));
browser.wait(until.elementIsVisible(button.getWebElement()), 1000).then(function(button){
button.click();
});