我已经尝试了一段时间,以了解如何使AHK按下按钮不是通过图像或像素搜索,也不是通过坐标,而是通过Web元素ID,这样它就可以在不同PC上正常工作,并且较少出现故障。
我已经确定了该按钮的Web代码:
<div class"rightButtonSection">
<button name="PierPropertiesContainer_componentnext_0" title="Next Page" class="button buttonLink" onclick"setKeys(event);__xee72onclick(this);" type="button">Next</button>
</div>
我在这里的深度不止一点,而且我从未在网上找到AHK的指南,该指南对此有很大帮助。
我认为这与document.getElementById(“ button”)有关,这与到目前为止我所知道的差不多。
如果您知道我下一步可以尝试的工作或需要什么其他信息,请告诉我!
干杯
编辑:
按照所提供的链接和建议,我将其组合在一起:
!q::
IEGet(name="") {
IfEqual, Name,, WinGetTitle, Name, ahk_class IEFrame
Name := (Name="New Tab - Windows Internet Explorer")? "about:Tabs":RegExReplace(Name, " - (Windows|Microsoft)? ?Internet Explorer$")
for wb in ComObjCreate("Shell.Application").Windows()
if wb.LocationName=Name and InStr(wb.FullName, "iexplore.exe")
return wb
}
wb := IEGet()
wb.Visible := true
wb.document.getElementById("button").click()
return
遗憾的是,它仍然无能为力,但我感觉它越来越近了。
编辑2:
IEGET(name =“”)位似乎正在工作,它将在所有打开的选项卡中循环,看起来像。但是一旦它到达“ return,wb”,它就挂在那儿,所以故障一定是我识别了标签的名字。
001: Return (3.37)
004: if name =
004: WinGetTitle,name,ahk_class IEFrame
005: name := (Name="New Tab - Windows Internet Explorer")? "about:Tabs":RegExReplace(Name, " - (Windows|Microsoft)? ?Internet Explorer$")
006: For wb, in ComObjCreate("Shell.Application").Windows() (0.09)
007: if wb.LocationName=Name && InStr(wb.FullName, "iexplore.exe")
008: Return,wb (4.82)
Press [F5] to refresh.
最佳答案
看看@Michael_Curry评论。您需要制作一个包含Web浏览器对象(Internet Explorer)的AHK对象。这是创建一个的简单脚本:
wb := ComObjCreate("InternetExplorer.Application") ;// Create an IE object
wb.Visible := true ;// Make the IE object visible
wb.Navigate("www.AutoHotkey.com") ;// Navigate to a webpage
然后,您的代码如下工作:
wb.document.getElementById("button")
编辑每条评论:
如果您需要找到一个已经打开的IE选项卡以用作wb对象,则用以下内容替换第一行:
IEGet("The name of the IE tab you want to use")
并将以下IEGet函数(从链接)添加到脚本中:
IEGet(name="") {
IfEqual, Name,, WinGetTitle, Name, ahk_class IEFrame ;// Get active window if no parameter
Name := (Name="New Tab - Windows Internet Explorer")? "about:Tabs":RegExReplace(Name, " - (Windows|Microsoft)? ?Internet Explorer$")
for wb in ComObjCreate("Shell.Application").Windows()
if wb.LocationName=Name and InStr(wb.FullName, "iexplore.exe")
return wb
}
根据OP的合理尝试进行编辑
你到那儿了。您需要用引号将IE选项卡的名称括起来,并可能有助于使用选择器(但这是另一个问题)。尝试:
wb := IEGet("IE tab name") ;// here put in the actual IE tab name in quotes
wb.Visible := true
wb.document.getElementById("PierPropertiesContainer_componentnext_0").click() ;// is button the ID? try the name or a different selector
Hth,