javascript - 网站无法识别我的输入 [如何从 VBA 手动触发 IE dom 事件]

标签 javascript vba internet-explorer web-scraping dom-events

我想在 gdax 上自动购买。但是我在金额窗口中的输入没有被识别。我可以在小字段上看到,上面写着:Total (LTC) ≈ 0.00000000

我的代码:

Sub test()

    Dim ObjIE As New InternetExplorer
    Dim Ohtml As HTMLDocument
    Dim HTMLtags As IHTMLElementCollection
    Dim HTMLtag As IHTMLElement
    Dim HTMLobjekt As IHTMLElement
    Dim item_limit As Object
    Dim y As Integer

    With ObjIE
        .Visible = True
        .navigate "https://www.gdax.com/trade/LTC-EUR"
        Do Until .readyState = READYSTATE_COMPLETE: Loop
        Set Ohtml = .document
    End With

    'Amount
    Do
        Set HTMLtags = Ohtml.getElementsByClassName("OrderForm_input-box_XkGmi")
        DoEvents
    Loop While HTMLtags.Length = 0
    For Each HTMLtag In HTMLtags
        If HTMLtag.Children(1).innerText = "EUR" Then
            Set HTMLobjekt = HTMLtag.Children(0)
            HTMLobjekt.Value = 100      ' this is the part that i excanged
        End If
    Next HTMLtag

    'get the Total(LTC) to cross check
    Do
        Set HTMLtags = Ohtml.getElementsByClassName("OrderForm_total_6EL8d")
        DoEvents
    Loop While HTMLtags.Length = 0
    For Each HTMLtag In HTMLtags
        Debug.Print HTMLtag.innerText & "Total(LTC)"
    Next HTMLtag

End Sub

代码完成后网站是这样说的:

Picture.this is how it is

它应该是这样的,当我手动输入数字时看起来是这样的:

Picture.this is how it should be

我还将标记的部分与以下内容交换:

HTMLobjekt.innerText = 100

HTMLobjekt.innerText = "100"

HTMLobjekt.Value = "100"

但没有任何效果。

最佳答案

在采取任何行动之前,您需要确保页面已完全加载。我检查了动态生成的此类类的可用性 OrderBookPanel_text_33dbp。然后我做了你想做的剩下的事情。最后,在将金额放入占位符之前,您需要先聚焦 目标。应用以上所有内容,您的脚本应该更像下面这样:

Sub Get_Value()
    Dim HTML As HTMLDocument, tags As Object
    Dim tag As Object, ival As Object

    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .navigate "https://www.gdax.com/trade/LTC-EUR"
        While .Busy = True Or .readyState < 4: DoEvents: Wend
        Set HTML = .document

        Do: Set tags = HTML.querySelector("[class^='OrderBookPanel_text_']"): DoEvents: Loop While tags Is Nothing
        Do: Set tag = HTML.querySelector("input[name='amount']"): DoEvents: Loop While tag Is Nothing
        tag.Focus
        tag.innerText = 100

        Set ival = HTML.querySelector("[class^='OrderForm_total_']")
        [A1] = ival.innerText
        .Quit
    End With
End Sub

此时输出:

0.79139546

关于javascript - 网站无法识别我的输入 [如何从 VBA 手动触发 IE dom 事件],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48611570/

相关文章:

javascript - 使用 jest 测试函数参数的默认情况

javascript - 使用 javascript 打开 CSS 模态对话框

excel - 循环中的 URLDownloadToFile 函数不起作用,因为即使没有要下载的文件,该函数也会返回 0

CSS Calc 似乎破坏了 IE10 中的整个浏览器?虽然适用于 IE9&11

html - 使用 "left"作为移动的 CSS 关键帧动画在 Internet Explorer 中不起作用

html - 在另一个 iframe 上透明 iframe

javascript - 粘性侧边栏和固定列

vba - 测试两个范围对象是否引用同一范围

vba - 如何在 Excel/VBA 中获取 RGB 颜色对应的十六进制值?

javascript - 从 js 到 jsx 的转换工具