VBA中有没有一种方法可以获取javascript生成的元素
Is there a way in VBA to get elements produced by javascript?
我已经在谷歌上做了几个小时的侦探工作(包括搜索StackOverflow),寻找一种可以在VBA中定位JavaScript生成的HTML元素的技术。
例如,我不能对此使用ie.Document.getElementById(id):http://www.kisfutures.com/electronic.html?page=quote&sym=NGU12&模式=i
然而,正如在谷歌网站上测试的那样,这种方法能够在静态页面上找到元素
我曾经尝试过简单地从Document.body中获取所有InnerText,然后解析文件以获得我想要的TD值,但在尝试拆分不同行上的两个值时遇到了障碍。例如,Split(..)将以下内容理解为"2040":
20
40
据我所知,getElementById(id)的问题在于,网站的表是在页面加载后由JavaScript生成的,因此由该JavaScript创建的任何元素都不能成为我的VBA代码的目标。有没有让我的VBA代码看到这个JavaScript生成的内容?
谢谢你的帮助!
编辑
正在使用的VBA代码:
Function Quote(Market, Parameter)
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "http://www.kisfutures.com/electronic.html?page=quote&sym=NGU12&mode=i"
While ie.Busy
DoEvents
Wend
Dim id As String
id = "dt1_" & Market & "_" & StrConv(Parameter, vbLowerCase)
Quote = ie.Document.getElementByID(id).InnerText
ie.Quit
End Function
基本上,我尝试使用Market的列标题来构建HTML元素ID。因此,例如,如果市场为"NGU12",列标题为"Open",则构建的ID为:"dt1_NGU12_Open",这是包含市场NGU12的"Open"值的TD元素的ID。
正如Tim所提到的,在尝试访问时,静态和动态生成的内容之间应该没有区别。试试这个:
Function Quote(Market, Parameter)
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "http://www.kisfutures.com/electronic.html?page=quote&sym=NGU12&mode=i"
While ie.Busy
DoEvents
Wend
Application.Wait Now + TimeSerial(0,0,1) 'Pause 1 second, hopefully
'the dynamic content is
'generated within this
'time-frame
Dim id As String
id = "dt1_" & Market & "_" & StrConv(Parameter, vbLowerCase)
Quote = ie.Document.getElementByID(id).InnerText
ie.Quit
End Function
有更好的方法可以停止执行(请参阅Windows Sleep API),但如果您需要更细粒度的控制,我将把它留给您。
此外,如果你想在页面生成后测试是否存在特定的id,你可以在IE中手动加载页面,并添加一个包含以下内容的书签作为URL:
javascript:void((function() {var a = document.getElementById(prompt('Please enter an id to test','dt1_NGU12_open')); if (a) {alert('Element found');} else {alert('Element not found')};})())
- 使用Javascript获取所选选项ID
- 可以't使用JavaScript获取width属性
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- Javascript获取上一个元素的内容
- 使用Javascript获取Twitter访问令牌
- 在不同的文件中使用Javascript获取表单数据
- 如何用javascript获取谷歌地图的经度和纬度
- 使用javascript获取表的td值
- 如何使用JavaScript获取当前URL
- 如何在谷歌网站中使用javascript获取当前页面的网址
- Javascript获取所有锚链接的索引
- 如何使用javascript获取从指定文件夹创建的所有文件的名称、大小、类型和日期
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 如何使用javascript获取下一个/转发url
- 需要使用javascript获取输入文本,然后将其添加到句子中
- 使用JavaScript获取Gridview单元格值
- 使用javascript获取跨度的文本
- 如何使用Javascript获取POST请求填充的元素的值
- JavaScript-获取数据属性的值返回未定义的值
- Javascript:获取“;FORM”;它是在.html到外部.js文件中创建的