0

I need to write script to existing site(i can't change its code)

    orders = document.getElementsByClassName('table-row');
    for (order of orders){
        let text = order.innerText;
        let btn = order.getElementsByClassName('icon-btn')[0];
        btn.click()
    }    

The problem is that btn is not button. It's an SVG that has to be clicked on (processed in internal js of website)

<svg width="1.2em" height="1.2em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32" class="icon-btn align-middle"><path d="M30 10.68l-2-6A1 1 0 0 0 27 4H5a1 1 0 0 0-1 .68l-2 6A1.19 1.19 0 0 0 2 11v6a1 1 0 0 0 1 1h1v10h2V18h6v10h16V18h1a1 1 0 0 0 1-1v-6a1.19 1.19 0 0 0 0-.32zM26 26H14v-8h12zm2-10h-4v-4h-2v4h-5v-4h-2v4h-5v-4H8v4H4v-4.84L5.72 6h20.56L28 11.16z" fill="currentColor"></path></svg>

so by default it has not click() property

VM844:9 Uncaught TypeError: Cannot read properties of undefined (reading 'click')
    at <anonymous>:9:13

So the task is just click on that element, and after that internal site js would process this click and give me popup.

Awaited event is like selenium.click() that just immitate click on object

I tried to add btn.addEventListener('click', ...)

for (order of orders){
        console.log(order)
        let text = order.innerText;
        let btn = order.getElementsByClassName('icon-btn')[0];
        btn.addEventListener("click", function(){ alert("Hello World!"); })
    }   

and i got error

VM1553:9 Uncaught TypeError: Cannot read properties of undefined (reading 'addEventListener')
    at <anonymous>:9:13
(anonymous) @ VM1553:9
  • https://stackoverflow.com/questions/9012537/how-to-get-the-element-clicked-for-the-whole-document this will help you – MORÈ Apr 08 '22 at 10:40

1 Answers1

0
document.getElementsByClassName('icon-btn')[0]._vei.onClick.value()
Ryan M
  • 15,686
  • 29
  • 53
  • 64
  • 1
    Please read [answer] and always remember that you are not merely solving the problem at hand, but also educating the OP and any future readers of this question and answer. Thus, please [edit] the answer to include an explanation as to why it works. – Adriaan Apr 08 '22 at 10:03