代码之家  ›  专栏  ›  技术社区  ›  kapperkp

在spec内时从.getAttribute返回值

  •  0
  • kapperkp  · 技术社区  · 6 年前

    async getSingleIdFromDrawerUsing(test1, test2) {
        await browser.wait(async () => {
          return await element(by.xpath('//h3[.="' + test1 + '"]/..' +
            '//something//div[@attr1"' + test2 + '"]')).getAttribute('attr2')
            .then(async (value) => {
              const item = value;
              console.log(item);
              return await item;
          });
        });
      }
    

    从console.log中可以看出,这个函数工作得非常好,但是当我在调用它的spec文件中时,我没有定义它。

    以下是我的规范和我正在做的工作:

    it('should click into widget from drawer and verify URL has correct Id', async () => {
        const actualReportId = await pagePbject.getSingleIdFromDrawerUsing('test1', 'test2');
        console.log(actualReportId);
        await pagePbject.clickIntoIdFromDrawer('test1', 'test2');
        expect(await browser.getCurrentUrl()).toBe(pagePbject.routeUrl + actualReportId);
    });
    

    spits out correct Id from console.log inside the pageObject class
    undefined (this is from the spec)
        × should click into test1 test2 widget from the drawer
          - Expected 'http://localhost:49158/url/id' to be 'http://localhost:49158/url/undefined'.
    

    我一定是做错了什么,但我想不出来

    1 回复  |  直到 6 年前
        1
  •  0
  •   tehbeardedone    6 年前

    我不知道你为什么需要 browser.wait() 在你的职责范围内。您应该能够做到这一点:

    async getSingleIdFromDrawerUsing(test1, test2) {
        return element(by.xpath('//h3[.="' + test1 + '"]/..' +
            '//something//div[@attr1"' + test2 + '"]')).getAttribute('attr2');
    }
    

    getSingleIdFromDrawerUsing(test1, test2) {
        return new Promise(resolve => {
            element(by.xpath('//h3[.="' + test1 + '"]/..' +
                '//something//div[@attr1"' + test2 + '"]')).getAttribute('attr2')
                .then(value => {
                    resolve(value);
                }
        }
    }
    

    在这两个例子中,您可以用相同的方式来称呼它:

    const actualReportId = await pageObject.getSingleIdFromDrawerUsing('test1', 'test2');