Search code examples
vbaseleniumselenium-webdriverwhatsappjs-scrollintoview

Element Out Of The ScreenShot error while taking screenshot from whatsapp using selenium and VBA


I need somebody to help with selenium classes to bring the information about message read/receipt to the excel sheet. From the help in my previous question, I have got somewhere. But I need more help for going further.

I send message from excel sheet, easily. But cannot bring the read receipt data back to excel sheet I have a code like below

Sub iselementpresenttest()
    
Dim bot As New WebDriver
Dim ks As New Keys

'Init New Chrome instance & navigate to WebWhatsApp
bot.Start "chrome", "https://web.whatsapp.com/"
bot.Get "/"
bot.Window.Maximize
MsgBox "Please scan the QR code. After you are logged in, please confirm this message box by clicking 'ok'"
bot.Wait (3500)
        

       bot.FindElementByXPath("//span[@data-testid='status-dblcheck']").TakeScreenshot.Copy
       Sheets(1).Cells(5, 5).Paste

        
    End Sub

It gives me error Element Out Of The ScreenShot.

HTML:

<span data-testid="status-dblcheck" data-icon="status-dblcheck" class=""><svg viewBox="0 0 18 18" width="18" height="18" class=""><path fill="currentColor" d="m17.394 5.035-.57-.444a.434.434 0 0 0-.609.076l-6.39 8.198a.38.38 0 0 1-.577.039l-.427-.388a.381.381 0 0 0-.578.038l-.451.576a.497.497 0 0 0 .043.645l1.575 1.51a.38.38 0 0 0 .577-.039l7.483-9.602a.436.436 0 0 0-.076-.609zm-4.892 0-.57-.444a.434.434 0 0 0-.609.076l-6.39 8.198a.38.38 0 0 1-.577.039l-2.614-2.556a.435.435 0 0 0-.614.007l-.505.516a.435.435 0 0 0 .007.614l3.887 3.8a.38.38 0 0 0 .577-.039l7.483-9.602a.435.435 0 0 0-.075-.609z"></path></svg></span>

Solution

  • As you are seeing Element Out Of The ScreenShot error presumably you may need to scroll the element within the Viewport before taking the screenshot as follows:

    Set element = bot.FindElementByXPath("//span[@data-testid='status-dblcheck']")
    element.ScrollIntoView().TakeScreenshot().Copy
    Sheets(1).Cells(5, 5).PasteSpecial