在TypeScript 2.5.3中,我有一堆链接的selenium WebElements。我需要在一个字符串数组中获取目标。从C#开始我将使用Linq和.Select()
,它本身从选择器返回一个返回类型列表。在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[]
。
为什么呢?我怎样才能得到正确的回报值?
答案 0 :(得分:0)
Array.filter
在这里似乎有误,相反它应该用于返回与输入数组相同的值,但是有一些过滤条件。相反,Array.map
是C#中List.Select
的正确等价物。
以下按预期方式工作:
let categoryLinks = categoryLinkElements.map(async linkElement => await linkElement.getAttribute('href'));
作为Typescript和Javascript的初学者,这似乎是一个愚蠢的问题......抱歉:/