我正在学习 AutoHotKey,并尝试看看是否可以使用它来自动化我们需要执行的某些流程。它将使用 MS Edge 打开一个浏览器窗口(一旦我让它工作,我就可以对其进行编码以处理其他浏览器),默认为主页,按Ctrl+U打开一个选项卡以检查页面的 HTML,然后搜索MyTech Support Portal
,然后向后搜索:sptth
( https:
) 以便我可以提取 URL。我不确定我是否正确处理了多个浏览器选项卡。
主页包含“技术帮助”下的下拉菜单,我将光标放在该下拉菜单上,下拉菜单会打开,然后选择“MyTech 支持门户”。我不知道如何让 AutoHotKey 找到文本“技术帮助”,将鼠标移到“MyTech 支持门户”,然后单击它。我想如果我可以使用 Inspect 查看 HTML 源代码,那么我就可以执行查找并提取该特定 URL。。这就是我尝试使用 WinGetText 的原因,这样我就可以提取“MyTech 支持门户”网址。
以下是包含 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。