Я изучаю 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
Вот возможное решение для вас:
- Откройте исходный код, как вы это делаете сейчас.
- Нажмите Ctrl+, Aчтобы выбрать все:
Send, ^a
Если он не выбран,Click
сначала посередине страницы, чтобы привлечь внимание.
- Копировать в буфер обмена с помощью Ctrl+ C:
Send, ^c
- Использовать
Clipboard
переменная для доступа к полному значению. - Сделайте какой-нибудь подбор по этому поводу. Я бы рекомендовал простое
RegExMatch
для нужного формата URL вместо странной обратной вещи, которую вы пытаетесь сделать. Захватите его с()
группой. Сопоставлениеhttps
в одиночку тоже не очень хорошая идея, так как я не думаю, что это единственный URL на странице.