2016-06-03 3 views
1

В VBA я удивлялся, если это возможно нажать на эту кнопку HTML без Id и имя атрибута:VBA: доступ к HTML-элементов без Id или имя

<ul aria-hidden="false" role="menu"> 
    <li> 
     <button ..></button> 
    </li> 
    <li> 
     <button ..></button> 
    </li> 
    <li> <!-- THE THIRD li, I would like to access this button --> 
     <button title="exporter" role="menuitem" data-ng-disabled="myfunction()">my text</button> 
    </li> 
</ul> 

Для других элементов с Id или имя, здесь как я делаю:

Set IE = CreateObject("InternetExplorer.Application") 
IE.navigate "site.com" 
IE.document.getElementById("submitBtn").Click 
// IE.document.getElementByName("submitBtn").Click 

но в моем предыдущем примере, нет «Id» или «Name» доступен только атрибут Title для кнопки, есть ли возможность получить доступ к этой кнопке?

Любая идея?


Другой способ, которым я пытался, но не работает:

цель состоит в том, чтобы нажать на кнопку, так что я пытался выполнить непосредственно "MyFunction()", как это:

IE.document.parentWindow.execScript "myfunction()", "Javascript" 

btu Я получаю ошибку выполнения (ошибка 80020101) .. любая идея?

+0

Да, вы можете указать его как n-й дочерний элемент (childNodes []) элемента, который имеет идентификатор или имя. –

+0

, если HTML является допустимым XML, вы также можете использовать XPath для выбора узлов/атрибутов на основе атрибутов, позиции или родного брата. – ThunderFrame

+0

Или GetElementsByTagname и цикл через возвращенную коллекцию, пока не найдете ее с правильным атрибутом title. – Tim

ответ

1

Пробовал ли вы прокручивать элементы и видеть возможный способ получения информации о том, как он обнаружен?

For Each element In IE.Document.all 
If element.className = "exporter" Then 
Set LookedElement = element 
Exit For 
End If 
Next 

Другая полезная функция для установки элементов

Set elems = IE.Document.getelementsbytagname("exporter") 
Set elems = IE.Document.getElementsByName("exporter") 

Это может быть более полезным, чтобы добавить ссылку (Controls References-> Microsoft Internet), так что вы можете увидеть все команды, доступные для IE вместо поздно связывание.

+1

да и для тех, который не видел эту ссылку, как я раньше, shdocvw.dll просто отсутствует, импортирует его из файлов system32 – Julien

Смежные вопросы