Автоматизация VBA не может получить innerText (innerHTML, значение)
Итак, я получил внутренний текст много раз. На этот раз это просто не работает. Перепробовал много альтернатив.
Прежде всего я использую Selenium на VBA для использования chromedriver. Исходный веб-сайт "[ http://www.fazenda.df.gov.br/area.cfm?id_area=1536]". Этот веб-сайт работает на фрейме Iframe. После получаса, пытаясь получить от него внутренний текст, я понял, что ссылка в его коде работает так же хорошо: "[ http://publica.agnet.fazenda.df.gov.br/FichaImovel/". Этот последний, кажется, действует на некий вызов "Angular".
Меню с нужным мне внутренним текстом является выпадающим. В качестве фиктивного значения можно использовать 50868748. Сгенерированный им выпадающий текст состоит из 15 строк и одной таблицы. Информация, которая мне нужна, находится в 15-й строке, "Nome do Responsável", или в столбце 2, строка 2 таблицы.
Мне удалось разместить код и создать выпадающий список, но мне не удалось получить внутренний текст.
Вот мой код:
Dim iptu As String
Dim driver As New ChromeDriver
With driver
.Start
iptu = 50868748 'dummy
.Get "http://publica.agnet.fazenda.df.gov.br/FichaImovel/#/FichaCadastral"
.FindElementById("inscricaoImovel").Clear
.FindElementById("inscricaoImovel").SendKeys iptu
.FindElementsById("btnCadastro")(2).Click
.Wait (300)
пока здесь все отлично работает
Dim label As Object
Dim name As String
Set label = .FindElementsByClass("ng-binding")(91)
'as you can see, i end up using this class(91) to get the value on the table, but i can get from the 15th line too
name = label.getAttribute("innerText") 'Error is here
Я пробовал.innerText, .innerHTML и другие. Ошибка всегда "объект не принимает свойство или метод" Ошибка 438.
end with
Драйвер Chrome обновлен. Кроме того, источник страницы не содержит нужную мне информацию.
Кто-нибудь может мне помочь?
2 ответа
Чтобы получить InnerText элемента, необходимо вызвать метод Text.
Set label = .FindElementsByClass("ng-binding")(91)
name = label.Text
Чтобы получить внутренний HTML,
name = label.Attribute("innerHTML")
Иногда я обнаруживаю, что мне нужно выполнить javascript, чтобы получить то, что мне нужно. Ты можешь попробовать
name=driver.ExecuteScript("document.getElementsByClassName('ng-binding')[91].innerText;")