How many of these are there on the page and is it the first? Your error is because you are trying to use a method for a single element on a collection as you haven't used an index on the collection to retrieve a single item.
You can return a nodeList of all matching classes with
Dim nodeList As Object, i As Long
Set nodeList = ie.document.querySelectorAll(".final-price")
Then access each by index:
For i = 0 To nodeList.Length-1
Debug.Print nodeList.item(i).innerText
Next
The "." is a class css selector. It targets the elements by their class name. The space between two class selectors represents a descendant combinator, stating that the second class must be a child of the first class.
.price-container .price-label
You may wish to grab labels and prices together:
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
Which, in fact, you could further combine as:
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 selectors are applied via querySelector and querySelectorAll methods - in this case, of .document. The first returns a single element i.e. the first match, the second returns all matches.
Single item:
You can use the last bit of code directly above to get label and price as there would be two elements if a single price and single label.
Or
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