编程技术网

关注微信公众号,定时推送前沿、专业、深度的编程技术资料。

 找回密码
 立即注册

QQ登录

只需一步,快速开始

极客时间

网站无法识别我的输入 [如何从 VBA 手动触发 IE dom 事件]:Website does not recognize my inputs [how to fire IE dom event manually from VBA]

BeeJayF 机器学习 2022-5-6 20:59 10人围观

腾讯云服务器
网站无法识别我的输入 [如何从 VBA 手动触发 IE dom 事件]的处理方法

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

I woud like to buy on gdax automatically. But my inputs in the Amount window doesn´t get recognized. I can see that on the little field, that says: 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 

这是代码完成后网站的提示:

This is what the website says when the code is done:

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

and this is how it should look like, and looks when I type the number in manually:

我还用以下内容交换了标记的部分:

I also exchange the marked part with things like:

HTMLobjekt.innerText = 100 

HTMLobjekt.innerText = "100" 

HTMLobjekt.Value = "100" 

但没有任何效果.

问题解答

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

You need to make sure the page is fully loaded before you take any initiative. I checked for the availability of one such class generated dynamically OrderBookPanel_text_33dbp. Then I did the rest what you tried to do. Lastly, you need to Focus the target before putting that amount in the placeholder. Applying all of the above, your script should more like below:

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 

这篇关于网站无法识别我的输入 [如何从 VBA 手动触发 IE dom 事件]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程技术网(www.editcode.net)!

腾讯云服务器 阿里云服务器
关注微信
^