Код VBA: Получить значение элемента из таблицы, полученной по HTTP-ответу - PullRequest
0 голосов
/ 21 февраля 2019

Мне нужна ваша помощь, чтобы получить значение элемента из формы, полученной в HTTP-ответе.Сценарий: например, во время покупки акции, вы нажимаете кнопку «КУПИТЬ» конкретной акции.В то же время откроется форма, в которой вы заполните все необходимые данные и разместите заказ.эта форма содержит некоторые скрытые значения, такие как: "stk_token", "user_access", "user_id" ... и т. д. если я декодирую ответ HTTP, я могу видеть эти значения (часть HTML-кода как получено).пожалуйста, дайте мне знать, если вам требуется дополнительная информация.

            </table>
            </div>
         </td>
        </tr>


 </table>


    <INPUT TYPE="hidden" name="stk_token" id="stk_token" value='1820'>
    <INPUT TYPE="hidden" name="stk_me" id="stk_me" value='NN'>
    <INPUT TYPE="hidden" name="stk_it" id="stk_it" value='EQ'> 
    <INPUT TYPE="hidden" name="amo"  id="amo" value=0 >
    <INPUT TYPE="hidden" name="so" id="so" value=0 >
    <INPUT TYPE="hidden" name="order_buy_sell" id="order_buy_sell"  >
    <INPUT TYPE="hidden" name="timestamp" id="timestamp" value="1549432660">
    <INPUT TYPE="hidden" name="client_id" id="client_id" value="M0KGI">
    <INPUT TYPE="hidden" name="oc" id="oc" value="">
    <INPUT TYPE="hidden" name="cover" id="cover" value="">
    <INPUT TYPE="hidden" name="mit" id="mit" value="">
    <INPUT TYPE="hidden" name="multipler" id="multipler" value="1">
    <INPUT TYPE="hidden" name="user_access" id="user_access" value="1021112110001000500011101001100000200110011001000000000000000000">
    <INPUT TYPE="HIDDEN" NAME="key" id="key" value="F7E57EE9-A3BD-4804-9439-387FB8B0528F">
    <INPUT TYPE="hidden" name="stk_ltp" id="stk_ltp" value="211.35">
    <INPUT TYPE="HIDDEN" NAME="orderdata" id="orderdata" value="">
    <INPUT TYPE="hidden" name="user_id" id="user_id" value="M84_153" >
    <INPUT TYPE="hidden" name="client_group" id="client_group" value="M0KGI" >
    <INPUT TYPE="hidden" name="branch_id" id="branch_id" value="FP" >
    <INPUT TYPE="hidden" name="lsrc" id ="lsrc" value="0" >
    <INPUT TYPE="hidden" name="wlsrc" id ="wlsrc" value="WEB" >
    <INPUT TYPE="hidden" name="brckt_flag" id="brckt_flag" value="normal" >

    <INPUT TYPE="hidden" name="delivery_lot_comm" id ="delivery_lot_comm" value="0.00" >
    <INPUT TYPE="hidden" name="price_den_comm" id ="price_den_comm" value="1.00" >




    </FORM>

    <script type="text/javascript" charset="utf-8" src="/resources/trading/js/profile/default.js"></script>   <!--for main js-->
<div id="disp_footer" ></div>
<script> 

Мне нужно получить все значения Id на моем листе ("order_buy_sell", "client_id" ... и т. д.).но если я пытаюсь напечатать единственное значение, оно не работает.Пожалуйста, помогите мне в этом.Я потратил много времени, чтобы решить, но не удалось.Это будет большая помощь для меня

    xmlhttp.setRequestHeader "Accept-Language", "en-US,en;q=0.9"
xmlhttp.setRequestHeader "Cookie", cook

xmlhttp.send bodyR

html.body.innerHTML = xmlhttp.responseText

'---to get cookies-----
getcookres = xmlhttp.GetResponseHeader("Set-Cookie")
Worksheets("Action").Cells(3, 24).Value = getcookres
   Worksheets("Action").Range("X3:Z3").Replace What:="path=/; HttpOnly", Replacement:="", LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
'---cookies Close-----

'--- to get elements---

Dim ele As Object

Set ele = html.querySelectorAll("#user_access")

Debug.Print ele.Item.innerText

'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

End Sub

1 Ответ

0 голосов
/ 21 февраля 2019

Вам нужен метод querySelector, так как он возвращает один элемент, который обычно имеет место при использовании селектора идентификатора.querySelectorAll возвращает нодлист, в который вы должны индексировать.

Set ele = html.querySelector("#user_access")

Затем, похоже, вы действительно хотите получить атрибут значения, вы можете попробовать с помощью

Debug.Print ele.value

.Другой метод поиска - использовать

ele.getAttribute("value")

Если вы хотите все, где type = hidden, а элемент является элементом input, вы можете использовать атрибут =селектор значения в сочетании с селектором type :

Dim nodeList As Object, i As Long
Set nodeList = html.querySelectorAll("input[type=hidden]")
For i = 0 To nodeList.Length - 1
    Debug.Print nodeList.item(i).NAME, nodeList.item(i).Value
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...