量角器 - 黄瓜:isPresent不起作用

时间:2015-10-30 08:25:46

标签: cucumber protractor

我有我的代码:

this.Then(/^I should see "([^"]*)" link$/, function (callback) {
   var logoutpath = by.xpath('//div[@id="account_logout"]/a');

    browser.wait(function() {
        return dv.isElementPresent(logoutpath);
    }, 30000);

    browser.driver.isElementPresent(logoutpath).then(function(isPresent){
        expect(isPresent.isPresent()).toBe(true); 
        browser.driver.findElement(logoutpath).then(function(start){
            start.click();
        });
    });
    browser.sleep(2222);

    console.log(">>>>>>>"+browser.getTitle());

    callback();
});

当我在控制台中运行并收到错误时:

TypeError: isPresent.isPresent is not a function
at c:\Users\binhlex\WebstormProjects\untitled\Feature\Steps\login_steps.js:33:30
at [object Object].promise.ControlFlow.runInFrame_ (c:/Users/binhlex/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:1857:20)
at [object Object].goog.defineClass.notify (c:/Users/binhlex/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:2448:25)
at [object Object].promise.Promise.notify_ (c:/Users/binhlex/AppData/Roaming/npm/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:564:12)
at Array.forEach (native)

我有一些问题吗? - 为什么我没有使用isPresent方法? - 当我运行console.log(">>>>>>>"+browser.getTitle());时,为什么显示>>>>>>>Promise::222 {[[PromiseStatus]]: "pending"},如何使用它来验证页面的预期标题?

1 个答案:

答案 0 :(得分:1)

对于您的最新问题,因为browser.getTitle()是一个承诺,如果您想要console.log标题,您必须这样做:browser.getTitle().then(function(title){console.log(title)});

对于您的第一个问题,我不明白您为什么要这么多地混淆代码。在量角器中,您不必在点击之前等待元素。 (如果你没有忽略同步)。

所以这个:

browser.driver.findElement(logoutpath).then(function(start){
            start.click();

equeals:

logoutpath.click()