AutoHotKey WinGetText не извлекает текст

AutoHotKey WinGetText не извлекает текст

Я изучаю AutoHotKey и пытаюсь понять, смогу ли я использовать его для автоматизации определенных процессов, которые нам нужно сделать. Он откроет окно браузера с помощью MS Edge (как только я заставлю его работать, я смогу закодировать его для обработки других браузеров), по умолчанию на домашней странице, нажмите Ctrl+ U, чтобы открыть вкладку для проверки HTML страницы, затем выполните поиск MyTech Support Portal, затем обратный поиск :sptth( https:), чтобы я мог извлечь URL. Я не уверен, правильно ли я обрабатываю несколько вкладок браузера.

Домашняя веб-страница содержит раскрывающийся список под "Tech Help", на который я навожу курсор, раскрывающийся список открывается, затем я выбираю "MyTech Support Portal". Я не мог понять, как заставить AutoHotKey найти текст "Tech Help", переместить мышь на "MyTech Support Portal" и щелкнуть по нему. Я подумал, что если я смогу посмотреть исходный код HTML с помощью Inspect, то я смогу выполнить поиск и извлечь этот конкретный URL.. Вот почему я пытаюсь использовать WinGetText, чтобы извлечь URL-адрес «Портала поддержки MyTech».

Пример раскрывающегося списка

Вот часть строки, содержащей URL: ,\"Url\":\"https://xxxxx365.sharepoint.com/sites/ServiceManagementSVCDesk\",\"Type\":\"Group\",\"Title\":\"MyTECH Support Portal\",

Проблема, с которой я сталкиваюсь, заключается в следующем:

WebText1 := WinGetText(WebTitle2)

вместо текста Inspect он возвращает:

WebText1=Устаревшее окно Chrome

В строке 15 MsgBox возвращает:

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

Вот мой программный код (я просто использую ++ Ctrlдля проверки своего кода):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

}

решение1

Вот возможное решение для вас:

  1. Откройте исходный код, как вы это делаете сейчас.
  2. Нажмите Ctrl+, Aчтобы выбрать все:
Send, ^a

Если он не выбран,Clickсначала посередине страницы, чтобы привлечь внимание.

  1. Копировать в буфер обмена с помощью Ctrl+ C:
Send, ^c
  1. ИспользоватьClipboardпеременная для доступа к полному значению.
  2. Сделайте какой-нибудь подбор по этому поводу. Я бы рекомендовал простоеRegExMatchдля нужного формата URL вместо странной обратной вещи, которую вы пытаетесь сделать. Захватите его с ()группой. Сопоставление httpsв одиночку тоже не очень хорошая идея, так как я не думаю, что это единственный URL на странице.

Связанный контент