【发布时间】:2017-11-11 19:19:08
【问题描述】:
在 TypeScript 2.5.3 中,我有一堆 selenium WebElements,它们是链接。我需要在字符串数组中获取他们的目标。来自 C# 我会使用带有 .Select() 的 Linq,它本身会从选择器返回一个返回类型列表。在 Typescript 中,这似乎不太好用:
let categoryLinkElements = await this.driver.findElements(By.css('ul li a'));
let categoryLinks = categoryLinkElements.filter(async linkElement => await linkElement.getAttribute('href'));
categoryLinkElements 是WebElement 的数组。 linkElement.getAttribute('href') 返回 Promise<string>。因为使用了await,我希望categoryLinks 是一个字符串数组,就像C# 中List.Select() 的相同行为。相反,categoryLinks 是 WebElement[]。
为什么?以及如何才能得到正确的返回值?
【问题讨论】:
-
您正在使用过滤器.. 如果 href 是您想要的,您应该使用 map。现在您只是过滤掉具有 href falsy 的元素。
标签: arrays linq typescript asynchronous array-filter