VBA, чтобы очистить значение от скрытого поля - PullRequest
0 голосов
/ 03 ноября 2018

Я новичок в очистке HTML и уже несколько дней пытаюсь очистить значение из скрытого поля, используя имя класса и идентификатор, но я все еще не могу получить значение.

Я пытаюсь получить значение (4) из следующего HTML-кода;

<input id="collectionQuantity" type="hidden" value="4">

Это взято из более крупного экстракта ниже;

<div class="lg-24 md-12 cols">
					
	<input id="selectedBranchCode" type="hidden" value="OT4">
	<input id="selectedBranchName" type="hidden" value="Ashton-under-Lyne">
	<input id="collectionQuantity" type="hidden" value="4">
						
		<button id="add_for_collection_button_3730P" title="Click here to add this item to your basket for collection" class="btn btn--lg btn--col fill " data-content="add-to-basket">Click &amp; Collect</button>
		<p id="branch_collection_3730P">4 in stock in <strong>Ashton-under-Lyne</strong> <a href="https://www.screwfix.com/jsp/cpc/cpcCheckStock.jsp?product_id=3730P" id="click_and_collect_3730P" class="_btn--link">Change store</a></p>
													
				</div>

Я пытался оооочень много способов получить значение. Я думаю, что мне ближе всего это:

sh01.Cells(r, 5) = HTML.getElementsByClassName("lg-24 md-12 cols")(3).innertext                                  'product stock
sh01.Cells(r, 5) = HTML.getElementsByTagName("p")(7).innertext                                                   'product stock
sh01.Cells(r, 5) = HTML.getElementById("branch_collection_" & z_sh01.Cells(y, 2)).innertext                      'product stock
sh01.Cells(r, 5) = HTML.getElementsByClassName("lg-24 md-12 cols")(3).getElementById("collectionQuantity").Value 'product stock
sh01.Cells(r, 5) = HTML.querySelector("# branch_collection_" & z_sh01.Cells(y, 2)).innertext                     'product stock
sh01.Cells(r, 5) = HTML.getElementById("collectionQuantity").innertext                                           'product stock

Заранее спасибо за помощь.

Ian

1 Ответ

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

Попробуйте

HTML.querySelector("#collectionQuantity").Value

или

HTML.getElementById("collectionQuantity").getAttribute("value")

Или даже

HTML.getElementById("collectionQuantity").Value

Вы после значения атрибута value целевого элемента, а не .innerText. Выше показано 3 способа сделать это.


Итак, мне пришлось установить локальное хранилище, а затем сначала добавить другой навигационный элемент, чтобы убедиться, что локальное хранилище было задано до перехода на страницу, представляющую интерес, в противном случае хранилище остается пустым и, следовательно, .value рассматриваемого элемента также пусто

Option Explicit

Public Sub GetInfo()
    Dim IE As New InternetExplorer
    With IE
        .Visible = True
        .Navigate2 "https://www.screwfix.com/jsp/tradeCounter/tradeCounterDetailsPage.jsp?id=460"

        While .Busy Or .readyState < 4: DoEvents: Wend

        .document.querySelector("input.btn").Click

        While .Busy Or .readyState < 4: DoEvents: Wend
        .Navigate2 "https://www.screwfix.com/p/hd907-9q-freestanding-oil-filled-radiator-2000w/3730p"

        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document

            Debug.Print .getElementById("collectionQuantity").Value

        End With

        .Quit
    End With
End Sub
...