AutoHotKey WinGetText 未检索文本

AutoHotKey WinGetText 未检索文本

我正在学习 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

以下是一个可能的解决方案:

  1. 像现在一样打开源代码。
  2. Ctrl+A选择所有内容:
Send, ^a

如果没有选择,Click位于页面中间的位置以获得焦点。

  1. 使用Ctrl+复制到剪贴板C
Send, ^c
  1. 使用Clipboard变量来访问完整值。
  2. 对此进行任何类型的匹配。我建议简单RegExMatch以获得所需的 URL 格式,而不是您尝试的奇怪的反向格式。用组捕获它()。单独匹配https也不是一个好主意,因为我不认为这是页面上唯一的 URL。

相关内容