我已经尝试了一段时间,以了解如何使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,

09-20 19:44