Автоматизация VBA не может получить innerText (innerHTML, значение) - PullRequest
0 голосов
/ 13 ноября 2018

Итак, я получал внутренний текст много раз.На этот раз это просто не работает.Перепробовал много альтернатив.

Прежде всего я использую Selenium на VBA для использования chromedriver.Исходный веб-сайт: «[http://www.fazenda.df.gov.br/area.cfm?id_area=1536]" Этот веб-сайт работает на Iframe. После получаса, пытаясь получить от него внутренний текст, я понял, что ссылка в его коде работает так же хорошо:» [http://publica.agnet.fazenda.df.gov.br/FichaImovel/#/FichaCadastral]". Этот последний, кажется, работает на некоторый вызов "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 ]

0 голосов
/ 13 ноября 2018

Иногда я обнаруживаю, что мне нужно выполнить javascript, чтобы получить то, что мне нужно.Вы можете попробовать

name=driver.ExecuteScript("document.getElementsByClassName('ng-binding')[91].innerText;")
0 голосов
/ 13 ноября 2018

Чтобы получить InnerText элемента, вам нужно вызвать метод Text

Set label = .FindElementsByClass("ng-binding")(91)

name = label.Text

Чтобы получить внутренний HTML,

name = label.Attribute("innerHTML")
...