javascript - 使用 VBA 自动执行数据抓取以及在多框架 Intranet 网页内按下按钮

标签 javascript html asp.net vba excel

我试图将一个值放入公司 Intranet 网页框架内的文本框中 .aspx 并根据文本框中输入的值提取数据。似乎没有任何效果,我尝试使用此代码 IE.document.getElementsByTagName("select")(1).Value = "optionvalue" 单击并更改登录屏幕中的下拉列表,这有效。我能够自动登录网页,所以我知道“getElements 可以工作,但登录后显然没有检测到网页中的元素,例如 textboxdropdownlists .

今天我发现造成这种情况的原因是由于我尝试查看源代码的网页内存在多帧,并且显然它分为三个框架BannerCSLeftFrameCSMainFrame

这是我当前的代码

 Dim IE As InternetExplorerMedium
 Dim objCollection As Object
 ________________________________________________________________________________
 Private Sub AccesLoginLink()
 Set IE = New InternetExplorerMedium
 IE.navigate "Https://website.aspx"
 IE.visible = true
 PageLoadStart
 End Sub
 ________________________________________________________________________________

 Private Sub automatereview_click()
 If IE Is Nothing Then Set IE = New InternetExplorerMedium
 IE.navigate "Https://framewebsite.aspx"
 IE.Visible = True
 PageLoadStart
 IE.document.getElementByTagName("select")(0).Value = "Option in a dropdown"
 ________________________________________________________________________________

 Private Sub PageLoadStart
 While IE.Busy Or IE.readyState <> 4: DoEvents: Wend
 End Sub

我在上面的代码中所做的是访问我在 View 源中看到的横幅框架链接,这就是我导航并更改下拉选项以进行测试的地方,它显然有效,但发生的是 BannerFrame是唯一加载的框架。有没有办法单击按钮或在文本框中输入值或在框架内抓取数据?

我遇到困难的原因是因为我对何时检查元素感到困惑,在我的理解中,文本框位于主体类leftframe的主体中> 在具有相同框架名称和 ID someLeftPage 的框架中,源是位于具有名称的 iframe 中的 CSLeftFrame form 内的 、 id、class 和 source,其名称、id、action 和方法均位于 frame 内的 contentframe 名称中> 其中有名称、id、src。

这里是 HTML 代码的图片,为了让您更容易理解,我突出显示了 文本框下拉列表 的元素标签。下面是页面的检查元素代码。

要单击的搜索栏和按钮位于表单ID内,其操作= CSLeftFrame.aspx**,位于主体类LeftFrame内,其中所有这些都在 iFrame 内,上面提到的所有内容都在 Form 内,其 action = content.aspx 和框架内名称为 ContentFrame

Page1 page2 page3

最佳答案

IE.Document.GetElementById("ctlsearch_ddlSearchOptions").value = "NNum" '<----change this to what ever value that is listed.
IE.Document.GetElementById("ctlsearch_ddlSearchOptions").FireEvent ("onchange")
Sleep (2000) '<---- I use a way to pause the script because it can sometimes take so time fot the onchange event to take effect. 

SearchText = "The text that I am seaching for" '<----change this to the text you are searching for.
IE.Document.GetElementById("ctlSearch_txtfind").value = SearchText

如果有多个框架/表格/表单,在没有看到所有内容的情况下很难判断。所以这些不包括任何类型的层次结构。如果有,您需要在 .Document 之后包含 getElementByid()getElementsByTagName()(0)

关于javascript - 使用 VBA 自动执行数据抓取以及在多框架 Intranet 网页内按下按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44815705/

相关文章:

再次进行 ASP.NET 重放攻击检测

javascript - 使用javascript从对象数组中查找象限

javascript - 如何更改char js的innerHTML

.net - 如何使用 javascript 遍历 ASP .NET 文本框并计算值?

javascript - PHP Loop with jQuery hide/slide toggle (Repeater field WP)

asp.net - web.config 和 machine.config 之间的区别?

javascript - 为什么表单提交的 addEventListener 不起作用?

javascript - 具有特定状态的新浏览器窗口

javascript - 控制台日志不是日志记录 - 它位于 js 文件的最开头

c# - Lucene(.Net)中是否存在WHERE子句?