我正在學習 AutoHotKey 並嘗試看看是否可以使用它來自動化我們需要執行的某些流程。它將使用 MS Edge 打開瀏覽器視窗(一旦我讓它工作,我可以對其進行編碼以處理其他瀏覽器),預設為主頁,按Ctrl+U打開一個選項卡以檢查頁面的 HTML,然後搜索MyTech Support Portal
,然後向後搜尋:sptth
( https:
),以便擷取 URL。我不確定我是否正確處理多個瀏覽器選項卡。
主頁在「技術說明」下包含一個下拉式選單,我將遊標放在該下拉式選單上,下拉式選單打開,然後選擇「MyTech 支援入口網站」。我不知道如何讓 AutoHotKey 找到文字“Tech Help”,將滑鼠移至“MyTech Support Portal”,然後點擊它。我想如果我可以使用 Inspect 查看 HTML 原始碼,那麼我就可以執行查找並提取該特定的 url。。這就是為什麼我嘗試使用 WinGetText,這樣我就可以提取「MyTech 支援入口網站」url。
這是包含 url 的行的一部分: ,\"Url\":\"https://xxxxx365.sharepoint.com/sites/ServiceManagementSVCDesk\",\"Type\":\"Group\",\"Title\":\"MyTECH Support Portal\",
我遇到的問題是當我執行時:
WebText1 := WinGetText(WebTitle2)
它傳回的不是檢查文字:
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。