量角器返回一个对象但是期望 - element.getText()的值

kyx*_*xap 8 javascript end-to-end promise selenium-webdriver protractor

无法理解为什么它返回一个对象而不是文本值,一些测试代码:

describe('columns swap', function () {

    describe('location column ', function () {
        it('should swap right', function () {
            browser.sleep(10000);
            var fColumn = element(by.xpath('(//*[@class="k-link"])[2]')).getText();
            console.log(fColumn); 
Run Code Online (Sandbox Code Playgroud)

控制台输出:

>   columns swap
>     location column { ptor_:    { controlFlow: [Function],
>      schedule: [Function],
>      getSession: [Function],
>      getCapabilities: [Function],
>      quit: [Function],
>      actions: [Function],
>      executeScript: [Function],
>      executeAsyncScript: [Function],
>      call: [Function],
>      wait: [Function],
>      sleep: [Function],
>      getWindowHandle: [Function],
>      getAllWindowHandles: [Function],
>      getPageSource: [Function],
>      close: [Function],
>      getCurrentUrl: [Function], ...
Run Code Online (Sandbox Code Playgroud)

如果我将这部分用于expect():

    expect(columnSorting.acpColumn.getText()).to.eventually.equal(fColumn);
Run Code Online (Sandbox Code Playgroud)

我知道了:

  1) columns swap location column  should swap right:
     AssertionError: expected 'Location' to equal { Object (ptor_, parentElement
ArrayFinder, ...) }
Run Code Online (Sandbox Code Playgroud)

因此,出于某种原因,我可以从期望中获取文本并且它正确 - "位置"

我做错了什么?

ale*_*cxe 13

getText() 返回一个承诺.如果要记录实际值,则需要解决它:

element(by.xpath('(//*[@class="k-link"])[2]')).getText().then(function (value) {
    console.log(value);

    expect(columnSorting.acpColumn.getText()).to.eventually.equal(value);
});
Run Code Online (Sandbox Code Playgroud)

请注意,expect()在protractor/jasminewd中"修补"以隐式解决promise.换句话说,您可以断言getText()等于所需的文本:

expect(element(by.xpath('(//*[@class="k-link"])[2]')).getText()).toEqual('My Text');
Run Code Online (Sandbox Code Playgroud)