Сколько их на странице, и это первое?Ваша ошибка в том, что вы пытаетесь использовать метод для отдельного элемента в коллекции, так как вы не использовали индекс для коллекции для извлечения одного элемента.
Вы можете вернуть nodeList всех соответствующих классовс
Dim nodeList As Object, i As Long
Set nodeList = ie.document.querySelectorAll(".final-price")
Затем получите доступ к каждому по индексу:
For i = 0 To nodeList.Length-1
Debug.Print nodeList.item(i).innerText
Next
"."является селектором css класса .Это предназначается для элементов их именем класса.Пространство между двумя селекторами классов представляет комбинатор потомков , указывающий, что второй класс должен быть дочерним по отношению к первому классу.
.price-container .price-label
Возможно, вы захотите объединить метки и цены:
Dim labels As Object, prices As Object, i As Long
Set labels = ie.document.querySelectorAll(".price-container .price-label")
Set prices = ie.document.querySelectorAll(".price-container .final-price")
For i = 0 To labels.Length - 1
Debug.Print labels.item(i).innerText & " " & prices.item(i).innerText
Next
Которые, на самом деле, вы можете дополнительно объединить как:
Dim labelsPrices, i As Long
Set labelsPrices = ie.document.querySelectorAll(".price-container .price-label, .price-container .final-price")
For i = 0 To labels.Length - 1 Step 2
Debug.Print labels.item(i).innerText & " " & prices.item(i + 1).innerText
Next
CSS-селекторыприменяются методами querySelector
и querySelectorAll
- в данном случае .document
.Первый возвращает один элемент, т. Е. Первое совпадение, второй возвращает все совпадения.
Один элемент:
Вы можете использовать последний бит кода непосредственно выше, чтобы получить метку и ценутак как будет два элемента, если одна цена и один ярлык.
или
Dim label As Object, price As Object, i As Long
Set label= ie.document.querySelector(".price-container .price-label")
Set price = ie.document.querySelectorAll(".price-container .final-price")
Debug.Print label.innerText, price.innerText