AutoHotKey WinGetText no recupera texto

AutoHotKey WinGetText no recupera texto

Estoy aprendiendo AutoHotKey y estoy tratando de ver si puedo usarlo para automatizar ciertos procesos que debemos realizar. Abrirá una ventana del navegador usando MS Edge (una vez que lo haga funcionar, puedo codificarlo para manejar los otros navegadores), de forma predeterminada a una página de inicio, presione Ctrl+ Upara abrir una pestaña para inspeccionar el HTML de la página, luego busque y MyTech Support Portalluego Busque hacia atrás :sptth( https:) para poder extraer la URL. No estoy seguro de estar manejando correctamente varias pestañas del navegador.

La página web de inicio contiene un menú desplegable en "Ayuda técnica", en el que colocaría el cursor, se abre el menú desplegable y luego selecciono "Portal de soporte MyTech". No pude entender cómo hacer que AutoHotKey encuentre el texto "Ayuda técnica", mueva el mouse al "Portal de soporte MyTech" y haga clic en él. Pensé que si podía ver el código fuente HTML usando Inspect, entonces podría ejecutar una búsqueda y extraer esa URL específica.. Es por eso que estoy intentando usar WinGetText, para poder extraer la URL del "Portal de soporte MyTech".

Ejemplo desplegable

Aquí está parte de la línea que contiene la URL: ,\"Url\":\"https://xxxxx365.sharepoint.com/sites/ServiceManagementSVCDesk\",\"Type\":\"Group\",\"Title\":\"MyTECH Support Portal\",

El problema que tengo es cuando ejecuto:

WebText1 := WinGetText(WebTitle2)

en lugar del texto Inspeccionar, devuelve:

WebText1=Ventana heredada de Chrome

En la línea 15, MsgBox devuelve:

WebTitle1=GNIE HOME - Home - Work - Microsoft Edge
WebPage1=36604
WebTitle2=view-source:https://xxxxx365.sharepoint.com and 1 more page - work - Microsoft Edge
WebPage2=36604

Aquí está el código de mi programa ( solo estoy usando Ctrl++ para probar mi código):AltR

#Requires AutoHotkey v2.0

^!r::
{
    Run "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe", , , &OutputVarPID
    winWaitActive "ahk_pid" OutputVarPID, , 3
    WebTitle1 := WinGetTitle("A")
    WebPage1 := OutputVarPID

    Send "^u"
    winWaitActive "ahk_pid" OutputVarPID, , 3
    WebTitle2 := WinGetTitle("A")
    WebPage2 := OutputVarPID

    MsgBox "WebTitle1=" WebTitle1 "`nWebPage1=" WebPage1 "`nWebTitle2=" WebTitle2 "`nWebPage2=" WebPage2
/*
    Send "^f"
    SendText "MyTech Support Portal"

    send "^f"
    sendText "https:"
    Send "^+g"
*/
    WebText1 := WinGetText(WebTitle2)
    msgbox "WebText1=" WebText1
    Pos1 := instr(WebText1, "MyTech Support Portal")
    if Pos1 = 0 {
        msgbox "'MyTech Support Portal' was not found"
        exit
    }
    Pos2 := instr(WebText1,":sptth:", , Pos1, -1)
    if Pos2 = 0 {
        msgbox "'https:' was not found"
        exit
    }
    url := SubStr(WebText1, Pos2, (Pos1 - Pos2 + 1))
    msgbox "url=" url

}

Respuesta1

Aquí tienes una posible solución:

  1. Abra la fuente como lo hace ahora.
  2. Pulsa Ctrl+ Apara seleccionar todo:
Send, ^a

Si no selecciona,Clickprimero en el medio de la página para enfocarse.

  1. Copiar al portapapeles con Ctrl+ C:
Send, ^c
  1. UsarClipboardvariable para acceder al valor completo.
  2. Haga cualquier tipo de comparación sobre eso. te recomiendo simpleRegExMatchpara el formato de URL deseado en lugar de lo extraño que estás intentando hacer al revés. Captúralo con un ()grupo. La coincidencia httpspor sí sola tampoco es una buena idea, ya que no creo que sea la única URL de la página.

información relacionada