I almost managed to do what I want, but there is a small flaw.
I have this HTML
<body>
<div>
<div>div</div>
</div>
<h1>
<h2>
<p>p1</p>
<p>
<p>p2</p>
</p>
</h2>
<h3>
<h2>h2</h2>
<h2>h2</h2>
</h3>
</h1>
<span>span</span>
<h6>
<h6>h6</h6>
</h6>
</body>
And my last attempt gives me almost the array I want
var elements = Array.from(document.body.getElementsByTagName("*"));
var newStrings = [];
for (var i = 0; i < elements.length; i++) {
const el = elements[i];
if (el.innerText.length !== 0) {
newStrings.push(el.innerText);
}
}
console.log(newStrings); // ['div', 'div', 'p1\n\np2', 'p1', 'p2', 'h2', 'h2', 'span', 'h6']
but as a result I need
['div', 'p1', 'p2', 'h2', 'h2', 'span', 'h6']
I will be very grateful for your help!