类型错误:WebElementCondition 未解析为 WebElement:[object Object]

Som*_*r N 4 webdriver jasmine selenium-webdriver 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();
        };
Run Code Online (Sandbox Code Playgroud)

预期结果: 它应该返回元素可用性truefalse

实际结果: 收到以下错误消息,不知道为什么会这样..

类型错误:WebElementCondition 未解析为 WebElement:[object Object]

截屏在此处输入图片说明

Flo*_* B. 5

Selenium 条件无法解析 Protractor ElementFinder

您可以使用 aprotractor.ExpectedConditions而不是protractor.until条件:

var EC = protractor.ExpectedConditions;
var button = element(by.css("..."));
browser.wait(EC.visibilityOf(button), 1000);
button.click();
Run Code Online (Sandbox Code Playgroud)

您还可以使用具有 Selenium 条件的 Selenium 元素:

var until = protractor.until;
var button = browser.findElement(by.css("..."));

browser.wait(until.elementIsVisible(button), 1000).then(function(button){
   button.click();
});
Run Code Online (Sandbox Code Playgroud)

另一种方法是WebElementElementFinder

var until = protractor.until;
var button = element(by.css("..."));

browser.wait(until.elementIsVisible(button.getWebElement()), 1000).then(function(button){
   button.click();
});
Run Code Online (Sandbox Code Playgroud)