2015-11-11 3 views
1

Я использую следующий код, чтобы просто выбрать раскрывающееся меню на веб-странице, которое, я думаю, будет довольно простым. К сожалению, я получаю ошибку «Неизвестное имя» всякий раз, когда я пытаюсь изменить SelectedIndex в списке выбора.AutoHotKey Com Object get select list

Это приводит к пустой сообщение:

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() 

Одна вещь, которая может быть значительным. Вы не можете щелкнуть правой кнопкой мыши список выбора и просмотреть источник, но вы можете сделать это рядом и найти список выбора в DOM. Кроме того, я считаю, что параметры для списка выбора динамически загружаются с помощью javascript, поэтому я подумал, что выбор был недоступен, когда я пытался получить к нему доступ. Я включил долгое время ожидания, чтобы убедиться, что все загружено, но оно по-прежнему не распознает имя или идентификатор списка выбора.

Любые идеи?

EDIT: HTML находится внутри рамки.

+0

Попробуйте изменить 'getElementByID (« mySelect »). Value' на фактическое значение вместо его выбранногоIndex. Кстати, почему 'ID', а не' Id'? Правильное написание - 'getElementById'. – wOxxOm

+0

Я пробовал ваши предложения, и я все равно получаю пустой MsgBox. Информация на этом веб-сайте очень чувствительна, поэтому мне интересно, если они каким-то образом отключили возможность программно видеть, что находится в html? Я бы подумал, что если я смогу F12 и посмотрю на источник, то я должен был бы скопировать его с помощью AHK .. – Jon

ответ

0

Для всех, кто может найти ответ в будущем, я понял, что страница использует фреймы и узнала от this post, что вы должны сначала нацелиться на фрейм, а затем вы можете манипулировать документом внутри фрейма. Я получал пустой MsgBox, потому что пытался найти элемент с идентификатором 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