Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用VBA在多框架intranet网页中自动抓取数据以及按下按钮_Javascript_Html_Asp.net_Vba_Excel - Fatal编程技术网

Javascript 使用VBA在多框架intranet网页中自动抓取数据以及按下按钮

Javascript 使用VBA在多框架intranet网页中自动抓取数据以及按下按钮,javascript,html,asp.net,vba,excel,Javascript,Html,Asp.net,Vba,Excel,我试图在公司内部网网页.aspx框架内的文本框中输入一个值,并根据文本框中输入的值提取数据。似乎什么都不起作用,我已尝试使用以下代码在登录屏幕中单击并更改dropwdownlistIE.document.getElementsByTagName(“选择”)(1)。Value=“optionvalue”这很有效。我能够自动登录网页,因此我知道“getElements”可以工作,但登录后,它显然没有检测到网页中的元素,例如文本框和下拉列表 今天我发现造成这种情况的原因是我试图查看源代码的网页中有多个

我试图在公司内部网网页.aspx框架内的文本框中输入一个值,并根据文本框中输入的值提取数据。似乎什么都不起作用,我已尝试使用以下代码在登录屏幕中单击并更改dropwdownlist
IE.document.getElementsByTagName(“选择”)(1)。Value=“optionvalue”
这很有效。我能够自动登录网页,因此我知道“getElements”可以工作,但登录后,它显然没有检测到网页中的元素,例如文本框下拉列表

今天我发现造成这种情况的原因是我试图查看源代码的网页中有多个框架,显然它分为三个框架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
将IE设置为InternetExplorerMedia
作为对象的Dim OBJ集合
________________________________________________________________________________
私有子访问登录链接()
设置IE=新的InternetExplorerMedium
例如,导航“H”ttps://website.aspx"
可见=真实
页面加载开始
端接头
________________________________________________________________________________
专用子自动机查看\单击()
如果IE为空,则设置IE=newInternetExplorerMedium
例如,导航“H”ttps://framewebsite.aspx"
可见=真实
页面加载开始
IE.document.getElementByTagName(“选择”)(0).Value=“下拉列表中的选项”
________________________________________________________________________________
专用子页面加载开始
当IE忙或IE readyState 4:DoEvents:Wend时
端接头
我在上面的代码中所做的是在视图源代码中看到的访问横幅帧链接,在那里我导航并更改了下拉选项,以测试它是否正常工作,但实际情况是,横幅帧是唯一加载的帧。是否有方法单击按钮或在文本框中输入值,或在一个框架内刮取数据?

我之所以感到困难,是因为我不清楚在我的理解中,当我检查元素时,textbox在一个body类leftframe的主体中,该框架具有相同的框架名称和IdsomeLeftPage,并且源是位于中的CSLeftFrame一个iframe,在表单中有一个名称、id、类和源,在框架中有一个名称、id、动作和方法,在contentframe中有一个名称、id、src

下面是HTML代码的图片,让您更容易使用。我突出显示了文本框下拉列表的元素标记。下面是页面的检查元素代码

要单击的搜索栏和按钮位于表单id中,其操作=CSLeftFrame.aspx**位于body class LeftFrame中,它们都位于iFrame中,上述所有内容都位于表单中操作=content.aspx并在名为ContentFrame的框架名称内


IE.Document.GetElementById(“ctlsearch\u ddlSearchOptions”).value=“NNum”
IE.Document.GetElementById(“ctlsearchOptions”).value=“NNum”必须查看站点的HTML,但通常使用
IE.Document.GetElementsbyTagName(“框架”)(0)
并添加更多
GetElements
以缩小元素范围。如果站点使用javascript,则需要使用
.FireEvent(“onClick”)
以使
值的更改生效。例如
IE.Document.Forms(“aspnetForm”).Item(ElementID).Value=ObjValue“向表单中注入值”
IE.Document.Forms(“aspnetForm”).Item(ElementID).firevent(“onChange”)”触发JavaScript事件
您的链接被我阻止了。如果要单击按钮,只需使用
。在元素行后单击
。@Quint我忘了提到,要单击的搜索栏和按钮位于表单id内,其action=CSLeftFrame.aspx位于body类LeftFrame内,它们都位于iFrame内,上述所有内容都位于它的action=content.aspx,框架内名为ContentFrame,请帮忙,非常感谢!!使用图像显示代码并不理想,在大多数帮助论坛中都不鼓励这样做。截图略好于手机摄像头的照片,但两者都不理想。最好是复制正在显示的代码的文本,以便将其添加到格式化的代码块中。图像与剪贴簿、屏幕阅读器和搜索引擎不兼容,因此读者很难提供帮助。你会用文本替换这些图像吗?你必须看到网站的HTML,但通常你会使用
IE.Document.GetElementsbyTagName(“frame”)(0)
,并添加更多
GetElements
,以缩小你的元素范围。如果网站使用javascript,你需要使用
.firevent(“onClick”)
以使
值的更改生效。例如
IE.Document.Forms(“aspnetForm”).Item(ElementID).Value=ObjValue“向表单中注入值”
IE.Document.Forms(“aspnetForm”).Item(ElementID).firevent(“onChange”)”触发JavaScript事件
您的链接被我阻止了。如果要单击按钮,只需使用
。在元素行后单击
。@Quint我忘了提到要单击的搜索栏和按钮位于表单id内,其action=CSLeftFrame.aspx位于body类LeftFrame w内
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