TypeError:WebElementCondition未解析为WebElement:[object Object]

时间:2016-05-25 05:38:36

标签: selenium-webdriver webdriver jasmine protractor

问题:在特定网页中,我想等待特定元素,然后对该元素执行操作。

使用的代码:

    //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]

截图enter image description here

1 个答案:

答案 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();
});