AutoHotKey Com 对象获取 select 列表

AutoHotKey Com Object get select list

我正在使用以下代码来 select 网页上的下拉菜单,我认为这会非常简单。不幸的是,每当我尝试更改 select 列表的 selectedIndex 时,我都会收到 "Unknown Name" 错误。

这会导致一条空消息:

test := ie.document.getElementByID("mySelect").selectedIndex.Value
MsgBox %test%

这是 HTML:

<SELECT onchange=onchangeSelectOption(); onfocus="hint('Select option');" id=mySelect name=mySelect> 
    <OPTION value=option_1>Option 1</OPTION>
</SELECT>

我试过这个来更改 selectedIndex 并手动触发 onchange 事件:

ie.document.getElementByID("mySelect").selectedIndex := 1
ie.document.getElementByID("mySelect").fireEvent("onChange")

我也尝试过通过其他方式获取值,例如:

test := ie.document.all.mySelect.selectedIndex
MsgBox %test%

以及:

ie.document.all.mySelect.Click()

一件可能很重要的事情。您不能右键单击 select 列表并查看源代码,但可以在附近执行此操作并在 DOM 中找到 select 列表。此外,我相信 select 列表的选项是通过 javascript 动态加载的,所以我认为当我尝试访问它时 select 可能不可用。我加入了很长的等待时间以确保所有内容都已加载,但它仍然无法识别 select 列表的名称或 ID。

有什么想法吗?

编辑:HTML 在框架内。

对于以后可能正在寻找答案的任何人,我意识到该页面正在使用框架,并且从 this post 了解到您必须首先定位框架,然后才能操作文档框内。我得到一个空的 MsgBox,因为我试图在一个不存在的文档中找到 ID 为 mySelect 的元素。

Frame := ComObj(9,ComObjQuery(ie.document.getElementById("_Menu_target").contentWindow,"{332C4427-26CB-11D0-B483-00C04FD90119}","{332C4427-26CB-11D0-B483-00C04FD90119}"),1)
msgbox % Frame.document.documentElement.innertext