Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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
使用VBA自动化IE-使用span单击定位按钮_Vba_Excel_Internet Explorer_Automation - Fatal编程技术网

使用VBA自动化IE-使用span单击定位按钮

使用VBA自动化IE-使用span单击定位按钮,vba,excel,internet-explorer,automation,Vba,Excel,Internet Explorer,Automation,我目前正在saleforce中自动上传文件 HTML文本为: <div> <a href="javascript:void(0);" onblur="chatter.getFeed().contentCommentActionBlur(this);" onfocus="chatter.getFeed().contentCommentActionFocus(this);" onclick="chatter.getFeed().createContentComment(this,

我目前正在saleforce中自动上传文件

HTML文本为:

 <div>
<a href="javascript:void(0);" onblur="chatter.getFeed().contentCommentActionBlur(this);" onfocus="chatter.getFeed().contentCommentActionFocus(this);" onclick="chatter.getFeed().createContentComment(this,'0D52700002cc67d', false, true);" onmousedown="chatter.getFeed().contentCommentActionMouseDown(this);" class="cxcontentcommentaction">
<img class="cxcontentcommentactionimg" src="/s.gif">
<span class="cxcontentcommentactiontext">Attach File</span>
</a>
</div>
2.通过span class=“cxcontentcommentactiontext”对get元素进行编码:

对于这两种情况,I'm Get error“对象不支持此属性

在你的评论之后,我试过这样做

Set oElementCollection = mydoc.getElementsByClassName("cxcontentcommentactiontext")

    For Each link In oElementCollection
    If link.innerHTML = "Attach File" Then
        link.Click
        Exit For
    End If
Next link
我已经尝试了下面的HTML

<a href="javascript:window.invokeOnClickJS_00bG0000000ikPK%28this%29" class="menuButtonMenuLink">
Send an Email</a>

但是用“附加文件”“此问题中提到的按钮只会遇到问题。

方法
getElementsByClassName
返回具有此类名的元素集合。这是因为
HTML
DOM
可以包含具有相同类名的多个元素。这就是为什么复数形式getElement
s
。因此,您需要知道需要从elements集合中选择哪个元素。如果是第一个,则:

...
Set oElementCollection = mydoc.getElementsByClassName("cxcontentcommentaction")
oElementCollection(0).Click
...
如果第一个不正确,那么尝试一下

For i = 0 To oElementCollection.Length - 1
 MsgBox oElementCollection(i).innerHTML
Next
找到合适的人

编辑:

在您添加问题后:

您可能得到的是
span
对象的集合,而不是链接。但是那些
span
元素应该在链接中。所以链接是他们的父母

所以


方法
getElementsByClassName
返回具有此类名的元素集合。这是因为
HTML
DOM
可以包含具有相同类名的多个元素。这就是为什么复数形式getElement
s
。因此,您需要知道需要从elements集合中选择哪个元素。如果是第一个,则:

...
Set oElementCollection = mydoc.getElementsByClassName("cxcontentcommentaction")
oElementCollection(0).Click
...
如果第一个不正确,那么尝试一下

For i = 0 To oElementCollection.Length - 1
 MsgBox oElementCollection(i).innerHTML
Next
找到合适的人

编辑:

在你补充问题后:

您可能得到的是
span
对象的集合,而不是链接。但是那些
span
元素应该在链接中。所以链接是他们的父母

所以


对于这个类,只有一个该锚可用,但当我执行您提到的编码时,它会执行另一个没有提到类名的文件上载。请检查所有找到的元素的
innerHTML
,以获得正确的一个。@Kathirvtv除了Axel上面所说的,还可以考虑循环使用的每个对象(<代码> OELMtEngices集合(i)< />代码>)可以用<代码> .GETAtgy(“属性名称”)< /C>函数来分析,该函数返回对象的某个属性的值。例如,这可能有助于扫描调用javascript的
on action
属性,该属性可能正在上载您的文件,并单击正确的属性。附加屏幕未正确打开,也无法导航,我认为这是因为“附加文件”按钮在页面末尾可用,所以用户需要手动向下操作并按下按钮。@Kathirvtv如果该按钮“附加文件”在页面中,它也在HTML文档的DOM中。您可以通过VBA单击它,但如果它打开一个框架,我不确定您是否能够在同一个浏览器实例中导航它。对于此类,只有一个此锚可用,但当我执行您提到的编码时,它执行另一个没有提到类名的文件上载。请检查所有找到的元素的<代码>内NHTML HTML /代码>以获得正确的元素。@ Kathirvtv除了上面提到的阿克塞尔之外,还可以考虑使用<代码> > GET属性分析您循环的每个对象(<代码> OELMtEngices集合(I)< /代码>)。('name of the attribute')函数,返回对象某个属性的值。这可能有助于扫描调用javascript的
on action
属性,该属性可能正在上载您的文件,然后单击正确的属性。附加屏幕未正确打开,也无法导航,我想这是因为附加文件按钮av页面结尾不可用,因此用户需要手动关闭并按下按钮。@Kathirvtv如果该按钮“附加文件”在页面中,它也在HTML文档的DOM中。您可以通过VBA单击它,但如果它打开一个框架,我不确定您是否能够在同一浏览器实例中导航它。看起来这应该是表单元素的一部分-在这种情况下,只需使用
Forms(0)。将
changing
0
提交到正确的索引。看起来这应该是表单元素的一部分-在这种情况下,只需使用
Forms(0)。将
changing
0
提交到正确的索引。
For i = 0 To oElementCollection.Length - 1
 MsgBox oElementCollection(i).innerHTML
Next
Set oElementCollection = mydoc.getElementsByClassName("cxcontentcommentactiontext") 
Set oElementCollection = mydoc.getElementsByClassName("cxcontentcommentactiontext")

    For Each span In oElementCollection
    If span.innerHTML = "Attach File" Then
        span.parentNode.Click
        Exit For
    End If
Next span