2016-09-12 3 views
0

У меня проблема с циклом через элементы div, ну, я не знаю, как это сделать. Код в значительной степени работает.Цикл через элементы DIV с использованием VBA

По существу у меня есть доступ к веб-сайту и вы хотите скачать его с помощью этой ссылки. Мой код выглядит и находит элемент X и продолжает нажимать на этот элемент.

Проблема заключается в том, что элемент X повторяется много раз, так что .getElementByClassName ("AssetLinkText") повторяется пару раз в HTML-коде, в результате чего получается загрузка первого «AssetLinkText».

Я думал, что душевное мышление будет состоять в том, чтобы искать через HTML i.e для каждого цикла и искать тег с внутренним текстом «Загрузить полный список ценных бумаг». Однако я не уверен, как это сделать.

Sub anotherAttempt() 

'DECLARE VARIABLES 
Dim browser As InternetExplorer 
Dim document As HTMLDocument 
Set browser = New InternetExplorer 
Dim div 

'MAKE VIS AND NAV 
browser.Visible = True 
browser.Navigate "https://etf.deutscheam.com/GBR/ENG/ETF/LU1221100792/-/DAX-UCITS-ETF-(DR)-Income" 

'MULTITHREAD 
Do While browser.Busy And Not browser.readyState = READYSTATE_COMPLETE 
     DoEvents 
Loop 

'PERFORM ACTIONS 
Set document = browser.document 
Dim anchorElement As HTMLAnchorElement 
Set anchorElement = document.getElementsByClassName("AssetLinkText") 
'CHECK FOR HOLDINGS LINK 
anchorElement.Click 

End Sub 
+1

и vb.net УВА не то же самое, то эта функция [кажется, не существует] (https://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument (v = vs.110) .aspx) в vb.net. Я не вижу никакого javascript. –

+0

'Set anchorElement = document.getElementsByClassName (" ... ")' дает вам список элементов, что означает, что 'anchorElement.Click' никогда не сможет работать. Вы не можете щелкнуть список элементов. Ваш вопрос неясно, чего вы хотите достичь. – Tomalak

+0

Посмотрите на return для getElementsByClassName, он вернет коллекцию, а затем примените ее для создания цикла. Файлы справки и Интернет в Microsoft Internet Controls являются отличным источником информации. –

ответ

0

Эта работа со мной.

Dim divs As Object 
Dim div As Object 

// get all div element in DOM 
Set divs = IE.document.getElementsByTagName("div") 

// loop through all div elements 
For Each div In divs 
    // do things here 
    // e.g. div.innerHTML = "hello" 
Next div 
+0

Пожалуйста, добавьте объяснение вашего решения. см. https://stackoverflow.com/help/how-to-answer – user7294900

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