使用Google Chrome Puppeteer,我希望在类似网络聊天的页面上检索所有用户消息。我意识到,当用户在同一分钟内说出任何内容时,例如:
<div class="something"> 20:00 Hi! </div>
<div class="something"> 20:00 Hi! <div> <-- this one just a few seconds after
对我来说,区分这条消息与另一条消息的唯一区别就是它的xpath。但不知何故,当新消息到达并且聊天缓冲区滚动时,每条消息都可以获得新的xpath值。
问题是:如果每条消息具有相同的内部文本和日期/时间,我如何区分它们?
答案 0 :(得分:0)
正如@keja指出的那样,我只需要获取节点元素的索引并将其保存在某处。
诀窍是:由于在用户消息之后出现了某些内容,索引必须在我将其存储到某处之前手动递增。像:
nodes.forEach((item, index) => {
const { children } = item;
const childrenArray = [...children];
childrenArray.forEach((child) => {
if (child.classList.contains(someSelector)) {
const lineElement = [...child.querySelectorAll('div.someClass')];
const element = lineElement[0];
const text = element.innerText;
lines.push({
id: index + 1,
text,
});
}
});
});