在打字稿中,我注意到当我将一个复杂对象放入一个数组中时,当我尝试从数组中访问该对象时,它会丢失其类型,而只是变成了类型对象。
例如
let myArray = return await this.browser.evaluate((sel: string) => Array.from(document.querySelectorAll(sel)), selector)
document.querySelectorAll(sel)返回一个NodeList<Element>是ArrayLike。Array.from应该将其NodeList转换为元素数组,但是一旦形成数组,所有数组元素都会失去它们的Element类型
我有一个只接受 type 参数的函数Element,但是当我尝试将其myArray[0]作为参数传入该函数时,出现错误:Error: Unsupported target type: object
我尝试了很多不同的方法来尝试让数组保持其对象类型,因此很难解释其中的每一个。我想知道如何创建一个Elements数组并让它们Element在以后访问时继续是s 而不是通用objects
这是我所做的测试中的更多背景信息
我要去这个页面:https : //www.w3schools.com/html/html_tables.asp 并且我传递给评估的选择器是table[id="customers"] tbody tr这应该与表中出现的 6 行匹配。
let test = await this.browser.evaluate((sel: string) =>
Array.from(document.querySelectorAll(sel)), selector)
console.log('testy1: ', test)
console.log('testy2: ', test[0])
console.log('testy3: ', typeof(test[0]))
当我运行上面的代码时,这是我在控制台日志中得到的输出:
testy1: [ {}, {}, {}, {}, {}, {}, {} ]
testy2: {}
testy3: object
它似乎匹配从页面中抓取元素,因为它正确返回了 6 个元素。但也许问题是返回的对象是空的?我不知道。
我想我的问题可能与这个问题有关:puppeteer page.evaluate querySelectorAll return empty objects
但该问题的解决方案对我不起作用,因为 href 不是对象类型的属性 Element
慕婉清6462132
相关分类