AutoHotKey中WinGetText无法获取查看源代码页面文本的问题求助
大家好,我正在学习AutoHotKey,想用来自动化一些日常流程,目前卡在了获取浏览器查看源代码页面文本的问题上,想请教下各位大佬。
我的需求是这样的:
- 打开微软Edge浏览器,默认进入主页
- 按下Ctrl+U打开页面源代码查看标签页
- 在源代码里搜索“MyTech Support Portal”,再反向搜索“https:”来提取对应的URL
- 另外我还想实现自动定位页面上“Tech Help”下拉菜单,点击里面的“MyTech Support Portal”选项,不过暂时没搞定,所以想着先通过提取源代码里的URL来绕一下。
现在遇到的核心问题是,当我用WinGetText(WebTitle2)获取查看源代码页面的文本时,返回的不是源代码内容,而是Chrome Legacy Window。
我先贴一下目前的测试代码(用Ctrl+Alt+R触发):
#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 }
运行后弹出的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
但紧接着获取文本的MsgBox只返回WebText1=Chrome Legacy Window,完全拿不到源代码内容。
另外补充一下,我在网页源代码里已经找到了目标URL所在的片段:
,"Url":"https://xxxxx365.sharepoint.com/sites/ServiceManagementSVCDesk","Type":"Group","Title":"MyTECH Support Portal",
有没有大佬能帮我看看,为什么WinGetText没法获取查看源代码页面的文本?或者有没有其他更靠谱的方法来提取这个URL?还有如果能顺便指点下怎么定位页面上的“Tech Help”下拉菜单并点击对应的选项,那就更感激了!
备注:内容来源于stack exchange,提问作者RoyM

